diff --git a/GI/Gdk.hs b/GI/Gdk.hs
--- a/GI/Gdk.hs
+++ b/GI/Gdk.hs
@@ -32,9 +32,9 @@
 import GI.Gdk.Structs
 import GI.Gdk.Unions
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Callbacks.hs b/GI/Gdk/Callbacks.hs
--- a/GI/Gdk/Callbacks.hs
+++ b/GI/Gdk/Callbacks.hs
@@ -50,9 +50,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Constants.hs b/GI/Gdk/Constants.hs
--- a/GI/Gdk/Constants.hs
+++ b/GI/Gdk/Constants.hs
@@ -2291,9 +2291,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Enums.hs b/GI/Gdk/Enums.hs
--- a/GI/Gdk/Enums.hs
+++ b/GI/Gdk/Enums.hs
@@ -46,9 +46,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Flags.hs b/GI/Gdk/Flags.hs
--- a/GI/Gdk/Flags.hs
+++ b/GI/Gdk/Flags.hs
@@ -23,9 +23,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -74,8 +74,8 @@
 foreign import ccall "gdk_window_state_get_type" c_gdk_window_state_get_type :: 
     IO GType
 
-instance BoxedEnum WindowState where
-    boxedEnumType _ = c_gdk_window_state_get_type
+instance BoxedFlags WindowState where
+    boxedFlagsType _ = c_gdk_window_state_get_type
 
 instance IsGFlag WindowState
 
@@ -120,8 +120,8 @@
 foreign import ccall "gdk_window_hints_get_type" c_gdk_window_hints_get_type :: 
     IO GType
 
-instance BoxedEnum WindowHints where
-    boxedEnumType _ = c_gdk_window_hints_get_type
+instance BoxedFlags WindowHints where
+    boxedFlagsType _ = c_gdk_window_hints_get_type
 
 instance IsGFlag WindowHints
 
@@ -163,8 +163,8 @@
 foreign import ccall "gdk_window_attributes_type_get_type" c_gdk_window_attributes_type_get_type :: 
     IO GType
 
-instance BoxedEnum WindowAttributesType where
-    boxedEnumType _ = c_gdk_window_attributes_type_get_type
+instance BoxedFlags WindowAttributesType where
+    boxedFlagsType _ = c_gdk_window_attributes_type_get_type
 
 instance IsGFlag WindowAttributesType
 
@@ -200,8 +200,8 @@
 foreign import ccall "gdk_wm_function_get_type" c_gdk_wm_function_get_type :: 
     IO GType
 
-instance BoxedEnum WMFunction where
-    boxedEnumType _ = c_gdk_wm_function_get_type
+instance BoxedFlags WMFunction where
+    boxedFlagsType _ = c_gdk_wm_function_get_type
 
 instance IsGFlag WMFunction
 
@@ -240,8 +240,8 @@
 foreign import ccall "gdk_wm_decoration_get_type" c_gdk_wm_decoration_get_type :: 
     IO GType
 
-instance BoxedEnum WMDecoration where
-    boxedEnumType _ = c_gdk_wm_decoration_get_type
+instance BoxedFlags WMDecoration where
+    boxedFlagsType _ = c_gdk_wm_decoration_get_type
 
 instance IsGFlag WMDecoration
 
@@ -355,8 +355,8 @@
 foreign import ccall "gdk_modifier_type_get_type" c_gdk_modifier_type_get_type :: 
     IO GType
 
-instance BoxedEnum ModifierType where
-    boxedEnumType _ = c_gdk_modifier_type_get_type
+instance BoxedFlags ModifierType where
+    boxedFlagsType _ = c_gdk_modifier_type_get_type
 
 instance IsGFlag ModifierType
 
@@ -398,8 +398,8 @@
 foreign import ccall "gdk_frame_clock_phase_get_type" c_gdk_frame_clock_phase_get_type :: 
     IO GType
 
-instance BoxedEnum FrameClockPhase where
-    boxedEnumType _ = c_gdk_frame_clock_phase_get_type
+instance BoxedFlags FrameClockPhase where
+    boxedFlagsType _ = c_gdk_frame_clock_phase_get_type
 
 instance IsGFlag FrameClockPhase
 
@@ -492,8 +492,8 @@
 foreign import ccall "gdk_event_mask_get_type" c_gdk_event_mask_get_type :: 
     IO GType
 
-instance BoxedEnum EventMask where
-    boxedEnumType _ = c_gdk_event_mask_get_type
+instance BoxedFlags EventMask where
+    boxedFlagsType _ = c_gdk_event_mask_get_type
 
 instance IsGFlag EventMask
 
@@ -529,8 +529,8 @@
 foreign import ccall "gdk_drag_action_get_type" c_gdk_drag_action_get_type :: 
     IO GType
 
-instance BoxedEnum DragAction where
-    boxedEnumType _ = c_gdk_drag_action_get_type
+instance BoxedFlags DragAction where
+    boxedFlagsType _ = c_gdk_drag_action_get_type
 
 instance IsGFlag DragAction
 
diff --git a/GI/Gdk/Functions.hs b/GI/Gdk/Functions.hs
--- a/GI/Gdk/Functions.hs
+++ b/GI/Gdk/Functions.hs
@@ -390,9 +390,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -407,7 +407,7 @@
 -- function gdk_utf8_to_string_target
 -- Args : [Arg {argCName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -419,21 +419,22 @@
 utf8ToStringTarget ::
     (MonadIO m) =>
     T.Text                                  -- str
-    -> m T.Text                             -- result
+    -> m (Maybe T.Text)                     -- result
 utf8ToStringTarget str = liftIO $ do
     str' <- textToCString str
     result <- gdk_utf8_to_string_target str'
-    checkUnexpectedReturnNULL "gdk_utf8_to_string_target" result
-    result' <- cstringToText result
-    freeMem result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- cstringToText result'
+        freeMem result'
+        return result''
     freeMem str'
-    return result'
+    return maybeResult
 
 
 -- function gdk_unicode_to_keyval
 -- Args : [Arg {argCName = "wc", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
@@ -454,7 +455,7 @@
 -- function gdk_threads_leave
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -473,7 +474,7 @@
 -- function gdk_threads_init
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -492,7 +493,7 @@
 -- function gdk_threads_enter
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -509,17 +510,17 @@
 
 
 -- function gdk_threads_add_timeout_seconds_full
--- Args : [Arg {argCName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "interval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "priority", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "interval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_threads_add_timeout_seconds_full" gdk_threads_add_timeout_seconds_full :: 
-    Int32 ->                                -- priority : TBasicType TInt32
-    Word32 ->                               -- interval : TBasicType TUInt32
+    Int32 ->                                -- priority : TBasicType TInt
+    Word32 ->                               -- interval : TBasicType TUInt
     FunPtr GLib.SourceFuncC ->              -- function : TInterface "GLib" "SourceFunc"
-    Ptr () ->                               -- data : TBasicType TVoid
+    Ptr () ->                               -- data : TBasicType TPtr
     FunPtr GLib.DestroyNotifyC ->           -- notify : TInterface "GLib" "DestroyNotify"
     IO Word32
 
@@ -539,17 +540,17 @@
 
 
 -- function gdk_threads_add_timeout_full
--- Args : [Arg {argCName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "interval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "priority", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "interval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_threads_add_timeout_full" gdk_threads_add_timeout_full :: 
-    Int32 ->                                -- priority : TBasicType TInt32
-    Word32 ->                               -- interval : TBasicType TUInt32
+    Int32 ->                                -- priority : TBasicType TInt
+    Word32 ->                               -- interval : TBasicType TUInt
     FunPtr GLib.SourceFuncC ->              -- function : TInterface "GLib" "SourceFunc"
-    Ptr () ->                               -- data : TBasicType TVoid
+    Ptr () ->                               -- data : TBasicType TPtr
     FunPtr GLib.DestroyNotifyC ->           -- notify : TInterface "GLib" "DestroyNotify"
     IO Word32
 
@@ -569,16 +570,16 @@
 
 
 -- function gdk_threads_add_idle_full
--- Args : [Arg {argCName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "priority", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_threads_add_idle_full" gdk_threads_add_idle_full :: 
-    Int32 ->                                -- priority : TBasicType TInt32
+    Int32 ->                                -- priority : TBasicType TInt
     FunPtr GLib.SourceFuncC ->              -- function : TInterface "GLib" "SourceFunc"
-    Ptr () ->                               -- data : TBasicType TVoid
+    Ptr () ->                               -- data : TBasicType TPtr
     FunPtr GLib.DestroyNotifyC ->           -- notify : TInterface "GLib" "DestroyNotify"
     IO Word32
 
@@ -597,18 +598,18 @@
 
 
 -- function gdk_text_property_to_utf8_list_for_display
--- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "encoding", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TCArray False (-1) 4 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "list", argType = TCArray True (-1) (-1) (TBasicType TUTF8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
--- returnType : TBasicType TInt32
+-- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "encoding", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TCArray False (-1) 4 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "list", argType = TCArray True (-1) (-1) (TBasicType TUTF8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_text_property_to_utf8_list_for_display" gdk_text_property_to_utf8_list_for_display :: 
     Ptr Display ->                          -- display : TInterface "Gdk" "Display"
     Ptr Atom ->                             -- encoding : TInterface "Gdk" "Atom"
-    Int32 ->                                -- format : TBasicType TInt32
+    Int32 ->                                -- format : TBasicType TInt
     Ptr Word8 ->                            -- text : TCArray False (-1) 4 (TBasicType TUInt8)
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     Ptr (Ptr CString) ->                    -- list : TCArray True (-1) (-1) (TBasicType TUTF8)
     IO Int32
 
@@ -639,17 +640,17 @@
 
 
 -- function gdk_test_simulate_key
--- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key_pressrelease", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key_pressrelease", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_test_simulate_key" gdk_test_simulate_key :: 
     Ptr Window ->                           -- window : TInterface "Gdk" "Window"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
-    Word32 ->                               -- keyval : TBasicType TUInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
+    Word32 ->                               -- keyval : TBasicType TUInt
     CUInt ->                                -- modifiers : TInterface "Gdk" "ModifierType"
     CUInt ->                                -- key_pressrelease : TInterface "Gdk" "EventType"
     IO CInt
@@ -675,17 +676,17 @@
 
 
 -- function gdk_test_simulate_button
--- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button_pressrelease", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button_pressrelease", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_test_simulate_button" gdk_test_simulate_button :: 
     Ptr Window ->                           -- window : TInterface "Gdk" "Window"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
-    Word32 ->                               -- button : TBasicType TUInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
+    Word32 ->                               -- button : TBasicType TUInt
     CUInt ->                                -- modifiers : TInterface "Gdk" "ModifierType"
     CUInt ->                                -- button_pressrelease : TInterface "Gdk" "EventType"
     IO CInt
@@ -713,7 +714,7 @@
 -- function gdk_test_render_sync
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -736,7 +737,7 @@
 -- function gdk_synthesize_window_state
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "unset_flags", argType = TInterface "Gdk" "WindowState", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "set_flags", argType = TInterface "Gdk" "WindowState", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -765,7 +766,7 @@
 -- function gdk_setting_get
 -- Args : [Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface "GObject" "Value", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -793,7 +794,7 @@
 -- function gdk_set_show_events
 -- Args : [Arg {argCName = "show_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -815,7 +816,7 @@
 -- function gdk_set_program_class
 -- Args : [Arg {argCName = "program_class", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -836,14 +837,14 @@
 
 
 -- function gdk_set_double_click_time
--- Args : [Arg {argCName = "msec", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "msec", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_set_double_click_time" gdk_set_double_click_time :: 
-    Word32 ->                               -- msec : TBasicType TUInt32
+    Word32 ->                               -- msec : TBasicType TUInt
     IO ()
 
 
@@ -859,7 +860,7 @@
 -- function gdk_set_allowed_backends
 -- Args : [Arg {argCName = "backends", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -882,7 +883,7 @@
 -- function gdk_selection_send_notify_for_display
 -- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "requestor", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -903,15 +904,15 @@
     -> Atom                                 -- selection
     -> Atom                                 -- target
     -> Atom                                 -- property
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-selectionSendNotifyForDisplay display requestor selection target property time = liftIO $ do
+selectionSendNotifyForDisplay display requestor selection target property time_ = liftIO $ do
     let display' = unsafeManagedPtrCastPtr display
     let requestor' = unsafeManagedPtrCastPtr requestor
     let selection' = unsafeManagedPtrGetPtr selection
     let target' = unsafeManagedPtrGetPtr target
     let property' = unsafeManagedPtrGetPtr property
-    gdk_selection_send_notify_for_display display' requestor' selection' target' property' time
+    gdk_selection_send_notify_for_display display' requestor' selection' target' property' time_
     touchManagedPtr display
     touchManagedPtr requestor
     touchManagedPtr selection
@@ -923,7 +924,7 @@
 -- function gdk_selection_send_notify
 -- Args : [Arg {argCName = "requestor", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -942,14 +943,14 @@
     -> Atom                                 -- selection
     -> Atom                                 -- target
     -> Atom                                 -- property
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-selectionSendNotify requestor selection target property time = liftIO $ do
+selectionSendNotify requestor selection target property time_ = liftIO $ do
     let requestor' = unsafeManagedPtrCastPtr requestor
     let selection' = unsafeManagedPtrGetPtr selection
     let target' = unsafeManagedPtrGetPtr target
     let property' = unsafeManagedPtrGetPtr property
-    gdk_selection_send_notify requestor' selection' target' property' time
+    gdk_selection_send_notify requestor' selection' target' property' time_
     touchManagedPtr requestor
     touchManagedPtr selection
     touchManagedPtr target
@@ -960,7 +961,7 @@
 -- function gdk_selection_owner_set_for_display
 -- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "owner", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "send_event", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -978,10 +979,10 @@
     a                                       -- display
     -> Maybe (b)                            -- owner
     -> Atom                                 -- selection
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> Bool                                 -- sendEvent
     -> m Bool                               -- result
-selectionOwnerSetForDisplay display owner selection time sendEvent = liftIO $ do
+selectionOwnerSetForDisplay display owner selection time_ sendEvent = liftIO $ do
     let display' = unsafeManagedPtrCastPtr display
     maybeOwner <- case owner of
         Nothing -> return nullPtr
@@ -990,7 +991,7 @@
             return jOwner'
     let selection' = unsafeManagedPtrGetPtr selection
     let sendEvent' = (fromIntegral . fromEnum) sendEvent
-    result <- gdk_selection_owner_set_for_display display' maybeOwner selection' time sendEvent'
+    result <- gdk_selection_owner_set_for_display display' maybeOwner selection' time_ sendEvent'
     let result' = (/= 0) result
     touchManagedPtr display
     whenJust owner touchManagedPtr
@@ -1001,7 +1002,7 @@
 -- function gdk_selection_owner_set
 -- Args : [Arg {argCName = "owner", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "send_event", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1017,10 +1018,10 @@
     (MonadIO m, WindowK a) =>
     Maybe (a)                               -- owner
     -> Atom                                 -- selection
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> Bool                                 -- sendEvent
     -> m Bool                               -- result
-selectionOwnerSet owner selection time sendEvent = liftIO $ do
+selectionOwnerSet owner selection time_ sendEvent = liftIO $ do
     maybeOwner <- case owner of
         Nothing -> return nullPtr
         Just jOwner -> do
@@ -1028,7 +1029,7 @@
             return jOwner'
     let selection' = unsafeManagedPtrGetPtr selection
     let sendEvent' = (fromIntegral . fromEnum) sendEvent
-    result <- gdk_selection_owner_set maybeOwner selection' time sendEvent'
+    result <- gdk_selection_owner_set maybeOwner selection' time_ sendEvent'
     let result' = (/= 0) result
     whenJust owner touchManagedPtr
     touchManagedPtr selection
@@ -1038,7 +1039,7 @@
 -- function gdk_selection_owner_get_for_display
 -- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -1052,22 +1053,23 @@
     (MonadIO m, DisplayK a) =>
     a                                       -- display
     -> Atom                                 -- selection
-    -> m Window                             -- result
+    -> m (Maybe Window)                     -- result
 selectionOwnerGetForDisplay display selection = liftIO $ do
     let display' = unsafeManagedPtrCastPtr display
     let selection' = unsafeManagedPtrGetPtr selection
     result <- gdk_selection_owner_get_for_display display' selection'
-    checkUnexpectedReturnNULL "gdk_selection_owner_get_for_display" result
-    result' <- (newObject Window) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Window) result'
+        return result''
     touchManagedPtr display
     touchManagedPtr selection
-    return result'
+    return maybeResult
 
 
 -- function gdk_selection_owner_get
 -- Args : [Arg {argCName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -1079,20 +1081,21 @@
 selectionOwnerGet ::
     (MonadIO m) =>
     Atom                                    -- selection
-    -> m Window                             -- result
+    -> m (Maybe Window)                     -- result
 selectionOwnerGet selection = liftIO $ do
     let selection' = unsafeManagedPtrGetPtr selection
     result <- gdk_selection_owner_get selection'
-    checkUnexpectedReturnNULL "gdk_selection_owner_get" result
-    result' <- (newObject Window) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Window) result'
+        return result''
     touchManagedPtr selection
-    return result'
+    return maybeResult
 
 
 -- function gdk_selection_convert
 -- Args : [Arg {argCName = "requestor", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1109,13 +1112,13 @@
     a                                       -- requestor
     -> Atom                                 -- selection
     -> Atom                                 -- target
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-selectionConvert requestor selection target time = liftIO $ do
+selectionConvert requestor selection target time_ = liftIO $ do
     let requestor' = unsafeManagedPtrCastPtr requestor
     let selection' = unsafeManagedPtrGetPtr selection
     let target' = unsafeManagedPtrGetPtr target
-    gdk_selection_convert requestor' selection' target' time
+    gdk_selection_convert requestor' selection' target' time_
     touchManagedPtr requestor
     touchManagedPtr selection
     touchManagedPtr target
@@ -1123,15 +1126,15 @@
 
 
 -- function gdk_query_visual_types
--- Args : [Arg {argCName = "visual_types", argType = TCArray False (-1) 1 (TInterface "Gdk" "VisualType"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "count", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "count", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "visual_types", argType = TCArray False (-1) 1 (TInterface "Gdk" "VisualType"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "count", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "count", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_query_visual_types" gdk_query_visual_types :: 
     Ptr (Ptr CUInt) ->                      -- visual_types : TCArray False (-1) 1 (TInterface "Gdk" "VisualType")
-    Ptr Int32 ->                            -- count : TBasicType TInt32
+    Ptr Int32 ->                            -- count : TBasicType TInt
     IO ()
 
 
@@ -1152,15 +1155,15 @@
 
 
 -- function gdk_query_depths
--- Args : [Arg {argCName = "depths", argType = TCArray False (-1) 1 (TBasicType TInt32), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "count", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "count", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "depths", argType = TCArray False (-1) 1 (TBasicType TInt), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "count", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "count", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_query_depths" gdk_query_depths :: 
-    Ptr (Ptr Int32) ->                      -- depths : TCArray False (-1) 1 (TBasicType TInt32)
-    Ptr Int32 ->                            -- count : TBasicType TInt32
+    Ptr (Ptr Int32) ->                      -- depths : TCArray False (-1) 1 (TBasicType TInt)
+    Ptr Int32 ->                            -- count : TBasicType TInt
     IO ()
 
 
@@ -1180,9 +1183,9 @@
 
 
 -- function gdk_property_get
--- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pdelete", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "actual_property_type", argType = TInterface "Gdk" "Atom", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "actual_format", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "actual_length", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "data", argType = TCArray False (-1) 8 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "actual_length", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TBoolean
+-- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TULong, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TULong, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pdelete", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "actual_property_type", argType = TInterface "Gdk" "Atom", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "actual_format", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "actual_length", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "data", argType = TCArray False (-1) 8 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "actual_length", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1190,12 +1193,12 @@
     Ptr Window ->                           -- window : TInterface "Gdk" "Window"
     Ptr Atom ->                             -- property : TInterface "Gdk" "Atom"
     Ptr Atom ->                             -- type : TInterface "Gdk" "Atom"
-    Word64 ->                               -- offset : TBasicType TUInt64
-    Word64 ->                               -- length : TBasicType TUInt64
-    Int32 ->                                -- pdelete : TBasicType TInt32
+    CULong ->                               -- offset : TBasicType TULong
+    CULong ->                               -- length : TBasicType TULong
+    Int32 ->                                -- pdelete : TBasicType TInt
     Ptr (Ptr Atom) ->                       -- actual_property_type : TInterface "Gdk" "Atom"
-    Ptr Int32 ->                            -- actual_format : TBasicType TInt32
-    Ptr Int32 ->                            -- actual_length : TBasicType TInt32
+    Ptr Int32 ->                            -- actual_format : TBasicType TInt
+    Ptr Int32 ->                            -- actual_length : TBasicType TInt
     Ptr (Ptr Word8) ->                      -- data : TCArray False (-1) 8 (TBasicType TUInt8)
     IO CInt
 
@@ -1205,8 +1208,8 @@
     a                                       -- window
     -> Atom                                 -- property
     -> Atom                                 -- type_
-    -> Word64                               -- offset
-    -> Word64                               -- length_
+    -> CULong                               -- offset
+    -> CULong                               -- length_
     -> Int32                                -- pdelete
     -> m (Bool,Atom,Int32,ByteString)       -- result
 propertyGet window property type_ offset length_ pdelete = liftIO $ do
@@ -1240,7 +1243,7 @@
 -- function gdk_property_delete
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1267,7 +1270,7 @@
 -- function gdk_pre_parse_libgtk_only
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1286,7 +1289,7 @@
 -- function gdk_pointer_ungrab
 -- Args : [Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1297,17 +1300,17 @@
 {-# DEPRECATED pointerUngrab ["(Since version 3.0)","Use gdk_device_ungrab(), together with gdk_device_grab()","            instead."]#-}
 pointerUngrab ::
     (MonadIO m) =>
-    Word32                                  -- time
+    Word32                                  -- time_
     -> m ()                                 -- result
-pointerUngrab time = liftIO $ do
-    gdk_pointer_ungrab time
+pointerUngrab time_ = liftIO $ do
+    gdk_pointer_ungrab time_
     return ()
 
 
 -- function gdk_pointer_is_grabbed
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1327,7 +1330,7 @@
 -- function gdk_pointer_grab
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "owner_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "confine_to", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "GrabStatus"
+-- returnType : Just (TInterface "Gdk" "GrabStatus")
 -- throws : False
 -- Skip return : False
 
@@ -1348,9 +1351,9 @@
     -> [EventMask]                          -- eventMask
     -> Maybe (b)                            -- confineTo
     -> Maybe (c)                            -- cursor
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m GrabStatus                         -- result
-pointerGrab window ownerEvents eventMask confineTo cursor time = liftIO $ do
+pointerGrab window ownerEvents eventMask confineTo cursor time_ = liftIO $ do
     let window' = unsafeManagedPtrCastPtr window
     let ownerEvents' = (fromIntegral . fromEnum) ownerEvents
     let eventMask' = gflagsToWord eventMask
@@ -1364,7 +1367,7 @@
         Just jCursor -> do
             let jCursor' = unsafeManagedPtrCastPtr jCursor
             return jCursor'
-    result <- gdk_pointer_grab window' ownerEvents' eventMask' maybeConfineTo maybeCursor time
+    result <- gdk_pointer_grab window' ownerEvents' eventMask' maybeConfineTo maybeCursor time_
     let result' = (toEnum . fromIntegral) result
     touchManagedPtr window
     whenJust confineTo touchManagedPtr
@@ -1373,18 +1376,18 @@
 
 
 -- function gdk_pixbuf_get_from_window
--- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src_x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src_y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GdkPixbuf" "Pixbuf"
+-- returnType : Just (TInterface "GdkPixbuf" "Pixbuf")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_pixbuf_get_from_window" gdk_pixbuf_get_from_window :: 
     Ptr Window ->                           -- window : TInterface "Gdk" "Window"
-    Int32 ->                                -- src_x : TBasicType TInt32
-    Int32 ->                                -- src_y : TBasicType TInt32
-    Int32 ->                                -- width : TBasicType TInt32
-    Int32 ->                                -- height : TBasicType TInt32
+    Int32 ->                                -- src_x : TBasicType TInt
+    Int32 ->                                -- src_y : TBasicType TInt
+    Int32 ->                                -- width : TBasicType TInt
+    Int32 ->                                -- height : TBasicType TInt
     IO (Ptr GdkPixbuf.Pixbuf)
 
 
@@ -1395,29 +1398,30 @@
     -> Int32                                -- srcY
     -> Int32                                -- width
     -> Int32                                -- height
-    -> m GdkPixbuf.Pixbuf                   -- result
+    -> m (Maybe GdkPixbuf.Pixbuf)           -- result
 pixbufGetFromWindow window srcX srcY width height = liftIO $ do
     let window' = unsafeManagedPtrCastPtr window
     result <- gdk_pixbuf_get_from_window window' srcX srcY width height
-    checkUnexpectedReturnNULL "gdk_pixbuf_get_from_window" result
-    result' <- (wrapObject GdkPixbuf.Pixbuf) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapObject GdkPixbuf.Pixbuf) result'
+        return result''
     touchManagedPtr window
-    return result'
+    return maybeResult
 
 
 -- function gdk_pixbuf_get_from_surface
--- Args : [Arg {argCName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src_x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src_y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GdkPixbuf" "Pixbuf"
+-- returnType : Just (TInterface "GdkPixbuf" "Pixbuf")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_pixbuf_get_from_surface" gdk_pixbuf_get_from_surface :: 
     Ptr Cairo.Surface ->                    -- surface : TInterface "cairo" "Surface"
-    Int32 ->                                -- src_x : TBasicType TInt32
-    Int32 ->                                -- src_y : TBasicType TInt32
-    Int32 ->                                -- width : TBasicType TInt32
-    Int32 ->                                -- height : TBasicType TInt32
+    Int32 ->                                -- src_x : TBasicType TInt
+    Int32 ->                                -- src_y : TBasicType TInt
+    Int32 ->                                -- width : TBasicType TInt
+    Int32 ->                                -- height : TBasicType TInt
     IO (Ptr GdkPixbuf.Pixbuf)
 
 
@@ -1428,25 +1432,26 @@
     -> Int32                                -- srcY
     -> Int32                                -- width
     -> Int32                                -- height
-    -> m GdkPixbuf.Pixbuf                   -- result
+    -> m (Maybe GdkPixbuf.Pixbuf)           -- result
 pixbufGetFromSurface surface srcX srcY width height = liftIO $ do
     let surface' = unsafeManagedPtrGetPtr surface
     result <- gdk_pixbuf_get_from_surface surface' srcX srcY width height
-    checkUnexpectedReturnNULL "gdk_pixbuf_get_from_surface" result
-    result' <- (wrapObject GdkPixbuf.Pixbuf) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapObject GdkPixbuf.Pixbuf) result'
+        return result''
     touchManagedPtr surface
-    return result'
+    return maybeResult
 
 
 -- function gdk_parse_args
--- Args : [Arg {argCName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "argc", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "argc", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_parse_args" gdk_parse_args :: 
-    Ptr Int32 ->                            -- argc : TBasicType TInt32
+    Ptr Int32 ->                            -- argc : TBasicType TInt
     Ptr (Ptr CString) ->                    -- argv : TCArray False (-1) 0 (TBasicType TUTF8)
     IO ()
 
@@ -1476,7 +1481,7 @@
 -- function gdk_pango_context_get_for_screen
 -- Args : [Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Context"
+-- returnType : Just (TInterface "Pango" "Context")
 -- throws : False
 -- Skip return : False
 
@@ -1501,7 +1506,7 @@
 -- function gdk_pango_context_get
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Pango" "Context"
+-- returnType : Just (TInterface "Pango" "Context")
 -- throws : False
 -- Skip return : False
 
@@ -1522,7 +1527,7 @@
 -- function gdk_offscreen_window_set_embedder
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "embedder", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1549,7 +1554,7 @@
 -- function gdk_offscreen_window_get_surface
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Surface"
+-- returnType : Just (TInterface "cairo" "Surface")
 -- throws : False
 -- Skip return : False
 
@@ -1561,20 +1566,21 @@
 offscreenWindowGetSurface ::
     (MonadIO m, WindowK a) =>
     a                                       -- window
-    -> m Cairo.Surface                      -- result
+    -> m (Maybe Cairo.Surface)              -- result
 offscreenWindowGetSurface window = liftIO $ do
     let window' = unsafeManagedPtrCastPtr window
     result <- gdk_offscreen_window_get_surface window'
-    checkUnexpectedReturnNULL "gdk_offscreen_window_get_surface" result
-    result' <- (newBoxed Cairo.Surface) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed Cairo.Surface) result'
+        return result''
     touchManagedPtr window
-    return result'
+    return maybeResult
 
 
 -- function gdk_offscreen_window_get_embedder
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -1586,20 +1592,21 @@
 offscreenWindowGetEmbedder ::
     (MonadIO m, WindowK a) =>
     a                                       -- window
-    -> m Window                             -- result
+    -> m (Maybe Window)                     -- result
 offscreenWindowGetEmbedder window = liftIO $ do
     let window' = unsafeManagedPtrCastPtr window
     result <- gdk_offscreen_window_get_embedder window'
-    checkUnexpectedReturnNULL "gdk_offscreen_window_get_embedder" result
-    result' <- (newObject Window) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Window) result'
+        return result''
     touchManagedPtr window
-    return result'
+    return maybeResult
 
 
 -- function gdk_notify_startup_complete_with_id
 -- Args : [Arg {argCName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1622,7 +1629,7 @@
 -- function gdk_notify_startup_complete
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1641,7 +1648,7 @@
 -- function gdk_list_visuals
 -- Args : []
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Visual")
+-- returnType : Just (TGList (TInterface "Gdk" "Visual"))
 -- throws : False
 -- Skip return : False
 
@@ -1654,7 +1661,6 @@
     m [Visual]                              -- result
 listVisuals  = liftIO $ do
     result <- gdk_list_visuals
-    checkUnexpectedReturnNULL "gdk_list_visuals" result
     result' <- unpackGList result
     result'' <- mapM (newObject Visual) result'
     g_list_free result
@@ -1662,14 +1668,14 @@
 
 
 -- function gdk_keyval_to_upper
--- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_keyval_to_upper" gdk_keyval_to_upper :: 
-    Word32 ->                               -- keyval : TBasicType TUInt32
+    Word32 ->                               -- keyval : TBasicType TUInt
     IO Word32
 
 
@@ -1683,14 +1689,14 @@
 
 
 -- function gdk_keyval_to_unicode
--- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt32)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_keyval_to_unicode" gdk_keyval_to_unicode :: 
-    Word32 ->                               -- keyval : TBasicType TUInt32
+    Word32 ->                               -- keyval : TBasicType TUInt
     IO Word32
 
 
@@ -1704,14 +1710,14 @@
 
 
 -- function gdk_keyval_to_lower
--- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_keyval_to_lower" gdk_keyval_to_lower :: 
-    Word32 ->                               -- keyval : TBasicType TUInt32
+    Word32 ->                               -- keyval : TBasicType TUInt
     IO Word32
 
 
@@ -1725,37 +1731,38 @@
 
 
 -- function gdk_keyval_name
--- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_keyval_name" gdk_keyval_name :: 
-    Word32 ->                               -- keyval : TBasicType TUInt32
+    Word32 ->                               -- keyval : TBasicType TUInt
     IO CString
 
 
 keyvalName ::
     (MonadIO m) =>
     Word32                                  -- keyval
-    -> m T.Text                             -- result
+    -> m (Maybe T.Text)                     -- result
 keyvalName keyval = liftIO $ do
     result <- gdk_keyval_name keyval
-    checkUnexpectedReturnNULL "gdk_keyval_name" result
-    result' <- cstringToText result
-    return result'
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- cstringToText result'
+        return result''
+    return maybeResult
 
 
 -- function gdk_keyval_is_upper
--- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_keyval_is_upper" gdk_keyval_is_upper :: 
-    Word32 ->                               -- keyval : TBasicType TUInt32
+    Word32 ->                               -- keyval : TBasicType TUInt
     IO CInt
 
 
@@ -1770,14 +1777,14 @@
 
 
 -- function gdk_keyval_is_lower
--- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_keyval_is_lower" gdk_keyval_is_lower :: 
-    Word32 ->                               -- keyval : TBasicType TUInt32
+    Word32 ->                               -- keyval : TBasicType TUInt
     IO CInt
 
 
@@ -1794,7 +1801,7 @@
 -- function gdk_keyval_from_name
 -- Args : [Arg {argCName = "keyval_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
@@ -1815,16 +1822,16 @@
 
 
 -- function gdk_keyval_convert_case
--- Args : [Arg {argCName = "symbol", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "lower", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "upper", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "symbol", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "lower", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "upper", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_keyval_convert_case" gdk_keyval_convert_case :: 
-    Word32 ->                               -- symbol : TBasicType TUInt32
-    Ptr Word32 ->                           -- lower : TBasicType TUInt32
-    Ptr Word32 ->                           -- upper : TBasicType TUInt32
+    Word32 ->                               -- symbol : TBasicType TUInt
+    Ptr Word32 ->                           -- lower : TBasicType TUInt
+    Ptr Word32 ->                           -- upper : TBasicType TUInt
     IO ()
 
 
@@ -1846,7 +1853,7 @@
 -- function gdk_keyboard_ungrab
 -- Args : [Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1857,17 +1864,17 @@
 {-# DEPRECATED keyboardUngrab ["(Since version 3.0)","Use gdk_device_ungrab(), together with gdk_device_grab()","            instead."]#-}
 keyboardUngrab ::
     (MonadIO m) =>
-    Word32                                  -- time
+    Word32                                  -- time_
     -> m ()                                 -- result
-keyboardUngrab time = liftIO $ do
-    gdk_keyboard_ungrab time
+keyboardUngrab time_ = liftIO $ do
+    gdk_keyboard_ungrab time_
     return ()
 
 
 -- function gdk_keyboard_grab
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "owner_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "GrabStatus"
+-- returnType : Just (TInterface "Gdk" "GrabStatus")
 -- throws : False
 -- Skip return : False
 
@@ -1882,26 +1889,26 @@
     (MonadIO m, WindowK a) =>
     a                                       -- window
     -> Bool                                 -- ownerEvents
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m GrabStatus                         -- result
-keyboardGrab window ownerEvents time = liftIO $ do
+keyboardGrab window ownerEvents time_ = liftIO $ do
     let window' = unsafeManagedPtrCastPtr window
     let ownerEvents' = (fromIntegral . fromEnum) ownerEvents
-    result <- gdk_keyboard_grab window' ownerEvents' time
+    result <- gdk_keyboard_grab window' ownerEvents' time_
     let result' = (toEnum . fromIntegral) result
     touchManagedPtr window
     return result'
 
 
 -- function gdk_init_check
--- Args : [Arg {argCName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TBoolean
+-- Args : [Arg {argCName = "argc", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "argc", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_init_check" gdk_init_check :: 
-    Ptr Int32 ->                            -- argc : TBasicType TInt32
+    Ptr Int32 ->                            -- argc : TBasicType TInt
     Ptr (Ptr CString) ->                    -- argv : TCArray False (-1) 0 (TBasicType TUTF8)
     IO CInt
 
@@ -1930,14 +1937,14 @@
 
 
 -- function gdk_init
--- Args : [Arg {argCName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "argc", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "argc", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_init" gdk_init :: 
-    Ptr Int32 ->                            -- argc : TBasicType TInt32
+    Ptr Int32 ->                            -- argc : TBasicType TInt
     Ptr (Ptr CString) ->                    -- argv : TCArray False (-1) 0 (TBasicType TUTF8)
     IO ()
 
@@ -1967,7 +1974,7 @@
 -- function gdk_get_show_events
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1987,7 +1994,7 @@
 -- function gdk_get_program_class
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -2008,7 +2015,7 @@
 -- function gdk_get_display_arg_name
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -2018,18 +2025,19 @@
 
 getDisplayArgName ::
     (MonadIO m) =>
-    m T.Text                                -- result
+    m (Maybe T.Text)                        -- result
 getDisplayArgName  = liftIO $ do
     result <- gdk_get_display_arg_name
-    checkUnexpectedReturnNULL "gdk_get_display_arg_name" result
-    result' <- cstringToText result
-    return result'
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- cstringToText result'
+        return result''
+    return maybeResult
 
 
 -- function gdk_get_display
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -2051,7 +2059,7 @@
 -- function gdk_get_default_root_window
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -2072,7 +2080,7 @@
 -- function gdk_flush
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2091,7 +2099,7 @@
 -- function gdk_events_pending
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2111,7 +2119,7 @@
 -- function gdk_events_get_distance
 -- Args : [Arg {argCName = "event1", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event2", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "distance", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2144,7 +2152,7 @@
 -- function gdk_events_get_center
 -- Args : [Arg {argCName = "event1", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event2", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2182,7 +2190,7 @@
 -- function gdk_events_get_angle
 -- Args : [Arg {argCName = "event1", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event2", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "angle", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2215,7 +2223,7 @@
 -- function gdk_error_trap_push
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2234,7 +2242,7 @@
 -- function gdk_error_trap_pop_ignored
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2253,7 +2261,7 @@
 -- function gdk_error_trap_pop
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -2272,7 +2280,7 @@
 -- function gdk_drop_reply
 -- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accepted", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2287,12 +2295,12 @@
     (MonadIO m, DragContextK a) =>
     a                                       -- context
     -> Bool                                 -- accepted
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-dropReply context accepted time = liftIO $ do
+dropReply context accepted time_ = liftIO $ do
     let context' = unsafeManagedPtrCastPtr context
     let accepted' = (fromIntegral . fromEnum) accepted
-    gdk_drop_reply context' accepted' time
+    gdk_drop_reply context' accepted' time_
     touchManagedPtr context
     return ()
 
@@ -2300,7 +2308,7 @@
 -- function gdk_drop_finish
 -- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "success", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2315,12 +2323,12 @@
     (MonadIO m, DragContextK a) =>
     a                                       -- context
     -> Bool                                 -- success
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-dropFinish context success time = liftIO $ do
+dropFinish context success time_ = liftIO $ do
     let context' = unsafeManagedPtrCastPtr context
     let success' = (fromIntegral . fromEnum) success
-    gdk_drop_finish context' success' time
+    gdk_drop_finish context' success' time_
     touchManagedPtr context
     return ()
 
@@ -2328,7 +2336,7 @@
 -- function gdk_drag_status
 -- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "action", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2343,20 +2351,20 @@
     (MonadIO m, DragContextK a) =>
     a                                       -- context
     -> [DragAction]                         -- action
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-dragStatus context action time = liftIO $ do
+dragStatus context action time_ = liftIO $ do
     let context' = unsafeManagedPtrCastPtr context
     let action' = gflagsToWord action
-    gdk_drag_status context' action' time
+    gdk_drag_status context' action' time_
     touchManagedPtr context
     return ()
 
 
 -- function gdk_drag_motion
--- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "protocol", argType = TInterface "Gdk" "DragProtocol", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "suggested_action", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "possible_actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "protocol", argType = TInterface "Gdk" "DragProtocol", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_root", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y_root", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "suggested_action", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "possible_actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2364,8 +2372,8 @@
     Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
     Ptr Window ->                           -- dest_window : TInterface "Gdk" "Window"
     CUInt ->                                -- protocol : TInterface "Gdk" "DragProtocol"
-    Int32 ->                                -- x_root : TBasicType TInt32
-    Int32 ->                                -- y_root : TBasicType TInt32
+    Int32 ->                                -- x_root : TBasicType TInt
+    Int32 ->                                -- y_root : TBasicType TInt
     CUInt ->                                -- suggested_action : TInterface "Gdk" "DragAction"
     CUInt ->                                -- possible_actions : TInterface "Gdk" "DragAction"
     Word32 ->                               -- time_ : TBasicType TUInt32
@@ -2381,15 +2389,15 @@
     -> Int32                                -- yRoot
     -> [DragAction]                         -- suggestedAction
     -> [DragAction]                         -- possibleActions
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m Bool                               -- result
-dragMotion context destWindow protocol xRoot yRoot suggestedAction possibleActions time = liftIO $ do
+dragMotion context destWindow protocol xRoot yRoot suggestedAction possibleActions time_ = liftIO $ do
     let context' = unsafeManagedPtrCastPtr context
     let destWindow' = unsafeManagedPtrCastPtr destWindow
     let protocol' = (fromIntegral . fromEnum) protocol
     let suggestedAction' = gflagsToWord suggestedAction
     let possibleActions' = gflagsToWord possibleActions
-    result <- gdk_drag_motion context' destWindow' protocol' xRoot yRoot suggestedAction' possibleActions' time
+    result <- gdk_drag_motion context' destWindow' protocol' xRoot yRoot suggestedAction' possibleActions' time_
     let result' = (/= 0) result
     touchManagedPtr context
     touchManagedPtr destWindow
@@ -2399,7 +2407,7 @@
 -- function gdk_drag_get_selection
 -- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Atom"
+-- returnType : Just (TInterface "Gdk" "Atom")
 -- throws : False
 -- Skip return : False
 
@@ -2423,9 +2431,9 @@
 
 
 -- function gdk_drag_find_window_for_screen
--- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "drag_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest_window", argType = TInterface "Gdk" "Window", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "protocol", argType = TInterface "Gdk" "DragProtocol", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "drag_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_root", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y_root", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest_window", argType = TInterface "Gdk" "Window", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "protocol", argType = TInterface "Gdk" "DragProtocol", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2433,8 +2441,8 @@
     Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
     Ptr Window ->                           -- drag_window : TInterface "Gdk" "Window"
     Ptr Screen ->                           -- screen : TInterface "Gdk" "Screen"
-    Int32 ->                                -- x_root : TBasicType TInt32
-    Int32 ->                                -- y_root : TBasicType TInt32
+    Int32 ->                                -- x_root : TBasicType TInt
+    Int32 ->                                -- y_root : TBasicType TInt
     Ptr (Ptr Window) ->                     -- dest_window : TInterface "Gdk" "Window"
     Ptr CUInt ->                            -- protocol : TInterface "Gdk" "DragProtocol"
     IO ()
@@ -2470,7 +2478,7 @@
 -- function gdk_drag_drop_succeeded
 -- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2494,7 +2502,7 @@
 -- function gdk_drag_drop
 -- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2507,11 +2515,11 @@
 dragDrop ::
     (MonadIO m, DragContextK a) =>
     a                                       -- context
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-dragDrop context time = liftIO $ do
+dragDrop context time_ = liftIO $ do
     let context' = unsafeManagedPtrCastPtr context
-    gdk_drag_drop context' time
+    gdk_drag_drop context' time_
     touchManagedPtr context
     return ()
 
@@ -2519,7 +2527,7 @@
 -- function gdk_drag_begin_for_device
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "targets", argType = TGList (TInterface "Gdk" "Atom"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "DragContext"
+-- returnType : Just (TInterface "Gdk" "DragContext")
 -- throws : False
 -- Skip return : False
 
@@ -2554,7 +2562,7 @@
 -- function gdk_drag_begin
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "targets", argType = TGList (TInterface "Gdk" "Atom"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "DragContext"
+-- returnType : Just (TInterface "Gdk" "DragContext")
 -- throws : False
 -- Skip return : False
 
@@ -2585,7 +2593,7 @@
 -- function gdk_drag_abort
 -- Args : [Arg {argCName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2598,11 +2606,11 @@
 dragAbort ::
     (MonadIO m, DragContextK a) =>
     a                                       -- context
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-dragAbort context time = liftIO $ do
+dragAbort context time_ = liftIO $ do
     let context' = unsafeManagedPtrCastPtr context
-    gdk_drag_abort context' time
+    gdk_drag_abort context' time_
     touchManagedPtr context
     return ()
 
@@ -2610,7 +2618,7 @@
 -- function gdk_disable_multidevice
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2627,15 +2635,15 @@
 
 
 -- function gdk_cairo_surface_create_from_pixbuf
--- Args : [Arg {argCName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scale", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "for_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scale", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "for_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Surface"
+-- returnType : Just (TInterface "cairo" "Surface")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_cairo_surface_create_from_pixbuf" gdk_cairo_surface_create_from_pixbuf :: 
     Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
-    Int32 ->                                -- scale : TBasicType TInt32
+    Int32 ->                                -- scale : TBasicType TInt
     Ptr Window ->                           -- for_window : TInterface "Gdk" "Window"
     IO (Ptr Cairo.Surface)
 
@@ -2664,7 +2672,7 @@
 -- function gdk_cairo_set_source_window
 -- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2697,7 +2705,7 @@
 -- function gdk_cairo_set_source_rgba
 -- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rgba", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2724,7 +2732,7 @@
 -- function gdk_cairo_set_source_pixbuf
 -- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbuf_x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbuf_y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2757,7 +2765,7 @@
 -- function gdk_cairo_set_source_color
 -- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2784,7 +2792,7 @@
 -- function gdk_cairo_region_create_from_surface
 -- Args : [Arg {argCName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Region"
+-- returnType : Just (TInterface "cairo" "Region")
 -- throws : False
 -- Skip return : False
 
@@ -2809,7 +2817,7 @@
 -- function gdk_cairo_region
 -- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2836,7 +2844,7 @@
 -- function gdk_cairo_rectangle
 -- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rectangle", argType = TInterface "Gdk" "Rectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2863,7 +2871,7 @@
 -- function gdk_cairo_get_clip_rectangle
 -- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rect", argType = TInterface "Gdk" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2888,22 +2896,22 @@
 
 
 -- function gdk_cairo_draw_from_gl
--- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "source", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "source_type", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "buffer_scale", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "source", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "source_type", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "buffer_scale", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_cairo_draw_from_gl" gdk_cairo_draw_from_gl :: 
     Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
     Ptr Window ->                           -- window : TInterface "Gdk" "Window"
-    Int32 ->                                -- source : TBasicType TInt32
-    Int32 ->                                -- source_type : TBasicType TInt32
-    Int32 ->                                -- buffer_scale : TBasicType TInt32
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
-    Int32 ->                                -- width : TBasicType TInt32
-    Int32 ->                                -- height : TBasicType TInt32
+    Int32 ->                                -- source : TBasicType TInt
+    Int32 ->                                -- source_type : TBasicType TInt
+    Int32 ->                                -- buffer_scale : TBasicType TInt
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
+    Int32 ->                                -- width : TBasicType TInt
+    Int32 ->                                -- height : TBasicType TInt
     IO ()
 
 
@@ -2931,7 +2939,7 @@
 -- function gdk_cairo_create
 -- Args : [Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Context"
+-- returnType : Just (TInterface "cairo" "Context")
 -- throws : False
 -- Skip return : False
 
@@ -2956,7 +2964,7 @@
 -- function gdk_beep
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2975,7 +2983,7 @@
 -- function gdk_add_option_entries_libgtk_only
 -- Args : [Arg {argCName = "group", argType = TInterface "GLib" "OptionGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects.hs b/GI/Gdk/Objects.hs
--- a/GI/Gdk/Objects.hs
+++ b/GI/Gdk/Objects.hs
@@ -38,9 +38,9 @@
 import GI.Gdk.Objects.Visual
 import GI.Gdk.Objects.Window
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/AppLaunchContext.hs b/GI/Gdk/Objects/AppLaunchContext.hs
--- a/GI/Gdk/Objects/AppLaunchContext.hs
+++ b/GI/Gdk/Objects/AppLaunchContext.hs
@@ -56,6 +56,7 @@
  -- * Properties
 -- ** Display
     AppLaunchContextDisplayPropertyInfo     ,
+    appLaunchContextDisplay                 ,
     constructAppLaunchContextDisplay        ,
     getAppLaunchContextDisplay              ,
 
@@ -64,9 +65,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -145,27 +146,32 @@
 -- VVV Prop "display"
    -- Type: TInterface "Gdk" "Display"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Nothing,Just False)
 
-getAppLaunchContextDisplay :: (MonadIO m, AppLaunchContextK o) => o -> m Display
+getAppLaunchContextDisplay :: (MonadIO m, AppLaunchContextK o) => o -> m (Maybe Display)
 getAppLaunchContextDisplay obj = liftIO $ getObjectPropertyObject obj "display" Display
 
 constructAppLaunchContextDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
-constructAppLaunchContextDisplay val = constructObjectPropertyObject "display" val
+constructAppLaunchContextDisplay val = constructObjectPropertyObject "display" (Just val)
 
 data AppLaunchContextDisplayPropertyInfo
 instance AttrInfo AppLaunchContextDisplayPropertyInfo where
     type AttrAllowedOps AppLaunchContextDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
     type AttrSetTypeConstraint AppLaunchContextDisplayPropertyInfo = DisplayK
     type AttrBaseTypeConstraint AppLaunchContextDisplayPropertyInfo = AppLaunchContextK
-    type AttrGetType AppLaunchContextDisplayPropertyInfo = Display
+    type AttrGetType AppLaunchContextDisplayPropertyInfo = (Maybe Display)
     type AttrLabel AppLaunchContextDisplayPropertyInfo = "display"
     attrGet _ = getAppLaunchContextDisplay
     attrSet _ = undefined
     attrConstruct _ = constructAppLaunchContextDisplay
+    attrClear _ = undefined
 
 type instance AttributeList AppLaunchContext = AppLaunchContextAttributeList
 type AppLaunchContextAttributeList = ('[ '("display", AppLaunchContextDisplayPropertyInfo)] :: [(Symbol, *)])
 
+appLaunchContextDisplay :: AttrLabelProxy "display"
+appLaunchContextDisplay = AttrLabelProxy
+
 type instance SignalList AppLaunchContext = AppLaunchContextSignalList
 type AppLaunchContextSignalList = ('[ '("launchFailed", Gio.AppLaunchContextLaunchFailedSignalInfo), '("launched", Gio.AppLaunchContextLaunchedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo)] :: [(Symbol, *)])
 
@@ -173,7 +179,7 @@
 -- method type : Constructor
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "AppLaunchContext"
+-- returnType : Just (TInterface "Gdk" "AppLaunchContext")
 -- throws : False
 -- Skip return : False
 
@@ -192,15 +198,15 @@
 
 -- method AppLaunchContext::set_desktop
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desktop", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desktop", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_app_launch_context_set_desktop" gdk_app_launch_context_set_desktop :: 
     Ptr AppLaunchContext ->                 -- _obj : TInterface "Gdk" "AppLaunchContext"
-    Int32 ->                                -- desktop : TBasicType TInt32
+    Int32 ->                                -- desktop : TBasicType TInt
     IO ()
 
 
@@ -223,7 +229,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -254,7 +260,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -289,7 +295,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -324,7 +330,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -355,7 +361,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/AppLaunchContext.hs-boot b/GI/Gdk/Objects/AppLaunchContext.hs-boot
--- a/GI/Gdk/Objects/AppLaunchContext.hs-boot
+++ b/GI/Gdk/Objects/AppLaunchContext.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.AppLaunchContext where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/Cursor.hs b/GI/Gdk/Objects/Cursor.hs
--- a/GI/Gdk/Objects/Cursor.hs
+++ b/GI/Gdk/Objects/Cursor.hs
@@ -73,12 +73,14 @@
 -- ** CursorType
     CursorCursorTypePropertyInfo            ,
     constructCursorCursorType               ,
+    cursorCursorType                        ,
     getCursorCursorType                     ,
 
 
 -- ** Display
     CursorDisplayPropertyInfo               ,
     constructCursorDisplay                  ,
+    cursorDisplay                           ,
     getCursorDisplay                        ,
 
 
@@ -86,9 +88,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -158,6 +160,7 @@
 -- VVV Prop "cursor-type"
    -- Type: TInterface "Gdk" "CursorType"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just False,Nothing)
 
 getCursorCursorType :: (MonadIO m, CursorK o) => o -> m CursorType
 getCursorCursorType obj = liftIO $ getObjectPropertyEnum obj "cursor-type"
@@ -175,20 +178,22 @@
     attrGet _ = getCursorCursorType
     attrSet _ = undefined
     attrConstruct _ = constructCursorCursorType
+    attrClear _ = undefined
 
 -- VVV Prop "display"
    -- Type: TInterface "Gdk" "Display"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just False,Nothing)
 
 getCursorDisplay :: (MonadIO m, CursorK o) => o -> m Display
-getCursorDisplay obj = liftIO $ getObjectPropertyObject obj "display" Display
+getCursorDisplay obj = liftIO $ checkUnexpectedNothing "getCursorDisplay" $ getObjectPropertyObject obj "display" Display
 
 constructCursorDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
-constructCursorDisplay val = constructObjectPropertyObject "display" val
+constructCursorDisplay val = constructObjectPropertyObject "display" (Just val)
 
 data CursorDisplayPropertyInfo
 instance AttrInfo CursorDisplayPropertyInfo where
-    type AttrAllowedOps CursorDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps CursorDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint CursorDisplayPropertyInfo = DisplayK
     type AttrBaseTypeConstraint CursorDisplayPropertyInfo = CursorK
     type AttrGetType CursorDisplayPropertyInfo = Display
@@ -196,10 +201,17 @@
     attrGet _ = getCursorDisplay
     attrSet _ = undefined
     attrConstruct _ = constructCursorDisplay
+    attrClear _ = undefined
 
 type instance AttributeList Cursor = CursorAttributeList
 type CursorAttributeList = ('[ '("cursorType", CursorCursorTypePropertyInfo), '("display", CursorDisplayPropertyInfo)] :: [(Symbol, *)])
 
+cursorCursorType :: AttrLabelProxy "cursorType"
+cursorCursorType = AttrLabelProxy
+
+cursorDisplay :: AttrLabelProxy "display"
+cursorDisplay = AttrLabelProxy
+
 type instance SignalList Cursor = CursorSignalList
 type CursorSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo)] :: [(Symbol, *)])
 
@@ -207,7 +219,7 @@
 -- method type : Constructor
 -- Args : [Arg {argCName = "cursor_type", argType = TInterface "Gdk" "CursorType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Cursor"
+-- returnType : Just (TInterface "Gdk" "Cursor")
 -- throws : False
 -- Skip return : False
 
@@ -231,7 +243,7 @@
 -- method type : Constructor
 -- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cursor_type", argType = TInterface "Gdk" "CursorType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Cursor"
+-- returnType : Just (TInterface "Gdk" "Cursor")
 -- throws : False
 -- Skip return : False
 
@@ -259,7 +271,7 @@
 -- method type : Constructor
 -- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Cursor"
+-- returnType : Just (TInterface "Gdk" "Cursor")
 -- throws : False
 -- Skip return : False
 
@@ -273,30 +285,31 @@
     (MonadIO m, DisplayK a) =>
     a                                       -- display
     -> T.Text                               -- name
-    -> m Cursor                             -- result
+    -> m (Maybe Cursor)                     -- result
 cursorNewFromName display name = liftIO $ do
     let display' = unsafeManagedPtrCastPtr display
     name' <- textToCString name
     result <- gdk_cursor_new_from_name display' name'
-    checkUnexpectedReturnNULL "gdk_cursor_new_from_name" result
-    result' <- (wrapObject Cursor) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapObject Cursor) result'
+        return result''
     touchManagedPtr display
     freeMem name'
-    return result'
+    return maybeResult
 
 -- method Cursor::new_from_pixbuf
 -- method type : Constructor
--- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Cursor"
+-- returnType : Just (TInterface "Gdk" "Cursor")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_cursor_new_from_pixbuf" gdk_cursor_new_from_pixbuf :: 
     Ptr Display ->                          -- display : TInterface "Gdk" "Display"
     Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
     IO (Ptr Cursor)
 
 
@@ -321,7 +334,7 @@
 -- method type : Constructor
 -- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Cursor"
+-- returnType : Just (TInterface "Gdk" "Cursor")
 -- throws : False
 -- Skip return : False
 
@@ -356,7 +369,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "CursorType"
+-- returnType : Just (TInterface "Gdk" "CursorType")
 -- throws : False
 -- Skip return : False
 
@@ -384,7 +397,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -413,7 +426,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GdkPixbuf" "Pixbuf"
+-- returnType : Just (TInterface "GdkPixbuf" "Pixbuf")
 -- throws : False
 -- Skip return : False
 
@@ -425,24 +438,25 @@
 cursorGetImage ::
     (MonadIO m, CursorK a) =>
     a                                       -- _obj
-    -> m GdkPixbuf.Pixbuf                   -- result
+    -> m (Maybe GdkPixbuf.Pixbuf)           -- result
 cursorGetImage _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_cursor_get_image _obj'
-    checkUnexpectedReturnNULL "gdk_cursor_get_image" result
-    result' <- (wrapObject GdkPixbuf.Pixbuf) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapObject GdkPixbuf.Pixbuf) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data CursorGetImageMethodInfo
-instance (signature ~ (m GdkPixbuf.Pixbuf), MonadIO m, CursorK a) => MethodInfo CursorGetImageMethodInfo a signature where
+instance (signature ~ (m (Maybe GdkPixbuf.Pixbuf)), MonadIO m, CursorK a) => MethodInfo CursorGetImageMethodInfo a signature where
     overloadedMethod _ = cursorGetImage
 
 -- method Cursor::get_surface
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_hot", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y_hot", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Surface"
+-- returnType : Just (TInterface "cairo" "Surface")
 -- throws : False
 -- Skip return : False
 
@@ -456,14 +470,15 @@
 cursorGetSurface ::
     (MonadIO m, CursorK a) =>
     a                                       -- _obj
-    -> m (Cairo.Surface,Double,Double)      -- result
+    -> m ((Maybe Cairo.Surface),Double,Double)-- result
 cursorGetSurface _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     xHot <- allocMem :: IO (Ptr CDouble)
     yHot <- allocMem :: IO (Ptr CDouble)
     result <- gdk_cursor_get_surface _obj' xHot yHot
-    checkUnexpectedReturnNULL "gdk_cursor_get_surface" result
-    result' <- (wrapBoxed Cairo.Surface) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed Cairo.Surface) result'
+        return result''
     xHot' <- peek xHot
     let xHot'' = realToFrac xHot'
     yHot' <- peek yHot
@@ -471,17 +486,17 @@
     touchManagedPtr _obj
     freeMem xHot
     freeMem yHot
-    return (result', xHot'', yHot'')
+    return (maybeResult, xHot'', yHot'')
 
 data CursorGetSurfaceMethodInfo
-instance (signature ~ (m (Cairo.Surface,Double,Double)), MonadIO m, CursorK a) => MethodInfo CursorGetSurfaceMethodInfo a signature where
+instance (signature ~ (m ((Maybe Cairo.Surface),Double,Double)), MonadIO m, CursorK a) => MethodInfo CursorGetSurfaceMethodInfo a signature where
     overloadedMethod _ = cursorGetSurface
 
 -- method Cursor::ref
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Cursor"
+-- returnType : Just (TInterface "Gdk" "Cursor")
 -- throws : False
 -- Skip return : False
 
@@ -510,7 +525,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/Cursor.hs-boot b/GI/Gdk/Objects/Cursor.hs-boot
--- a/GI/Gdk/Objects/Cursor.hs-boot
+++ b/GI/Gdk/Objects/Cursor.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.Cursor where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/Device.hs b/GI/Gdk/Objects/Device.hs
--- a/GI/Gdk/Objects/Device.hs
+++ b/GI/Gdk/Objects/Device.hs
@@ -156,30 +156,35 @@
  -- * Properties
 -- ** AssociatedDevice
     DeviceAssociatedDevicePropertyInfo      ,
+    deviceAssociatedDevice                  ,
     getDeviceAssociatedDevice               ,
 
 
 -- ** DeviceManager
     DeviceDeviceManagerPropertyInfo         ,
     constructDeviceDeviceManager            ,
+    deviceDeviceManager                     ,
     getDeviceDeviceManager                  ,
 
 
 -- ** Display
     DeviceDisplayPropertyInfo               ,
     constructDeviceDisplay                  ,
+    deviceDisplay                           ,
     getDeviceDisplay                        ,
 
 
 -- ** HasCursor
     DeviceHasCursorPropertyInfo             ,
     constructDeviceHasCursor                ,
+    deviceHasCursor                         ,
     getDeviceHasCursor                      ,
 
 
 -- ** InputMode
     DeviceInputModePropertyInfo             ,
     constructDeviceInputMode                ,
+    deviceInputMode                         ,
     getDeviceInputMode                      ,
     setDeviceInputMode                      ,
 
@@ -187,35 +192,41 @@
 -- ** InputSource
     DeviceInputSourcePropertyInfo           ,
     constructDeviceInputSource              ,
+    deviceInputSource                       ,
     getDeviceInputSource                    ,
 
 
 -- ** NAxes
     DeviceNAxesPropertyInfo                 ,
+    deviceNAxes                             ,
     getDeviceNAxes                          ,
 
 
 -- ** Name
     DeviceNamePropertyInfo                  ,
     constructDeviceName                     ,
+    deviceName                              ,
     getDeviceName                           ,
 
 
 -- ** ProductId
     DeviceProductIdPropertyInfo             ,
     constructDeviceProductId                ,
+    deviceProductId                         ,
     getDeviceProductId                      ,
 
 
 -- ** Type
     DeviceTypePropertyInfo                  ,
     constructDeviceType                     ,
+    deviceType                              ,
     getDeviceType                           ,
 
 
 -- ** VendorId
     DeviceVendorIdPropertyInfo              ,
     constructDeviceVendorId                 ,
+    deviceVendorId                          ,
     getDeviceVendorId                       ,
 
 
@@ -238,9 +249,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -370,55 +381,60 @@
 -- VVV Prop "associated-device"
    -- Type: TInterface "Gdk" "Device"
    -- Flags: [PropertyReadable]
+   -- Nullable: (Just True,Nothing)
 
-getDeviceAssociatedDevice :: (MonadIO m, DeviceK o) => o -> m Device
+getDeviceAssociatedDevice :: (MonadIO m, DeviceK o) => o -> m (Maybe Device)
 getDeviceAssociatedDevice obj = liftIO $ getObjectPropertyObject obj "associated-device" Device
 
 data DeviceAssociatedDevicePropertyInfo
 instance AttrInfo DeviceAssociatedDevicePropertyInfo where
-    type AttrAllowedOps DeviceAssociatedDevicePropertyInfo = '[ 'AttrGet]
+    type AttrAllowedOps DeviceAssociatedDevicePropertyInfo = '[ 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint DeviceAssociatedDevicePropertyInfo = (~) ()
     type AttrBaseTypeConstraint DeviceAssociatedDevicePropertyInfo = DeviceK
-    type AttrGetType DeviceAssociatedDevicePropertyInfo = Device
+    type AttrGetType DeviceAssociatedDevicePropertyInfo = (Maybe Device)
     type AttrLabel DeviceAssociatedDevicePropertyInfo = "associated-device"
     attrGet _ = getDeviceAssociatedDevice
     attrSet _ = undefined
     attrConstruct _ = undefined
+    attrClear _ = undefined
 
 -- VVV Prop "device-manager"
    -- Type: TInterface "Gdk" "DeviceManager"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Nothing,Nothing)
 
-getDeviceDeviceManager :: (MonadIO m, DeviceK o) => o -> m DeviceManager
+getDeviceDeviceManager :: (MonadIO m, DeviceK o) => o -> m (Maybe DeviceManager)
 getDeviceDeviceManager obj = liftIO $ getObjectPropertyObject obj "device-manager" DeviceManager
 
 constructDeviceDeviceManager :: (DeviceManagerK a) => a -> IO ([Char], GValue)
-constructDeviceDeviceManager val = constructObjectPropertyObject "device-manager" val
+constructDeviceDeviceManager val = constructObjectPropertyObject "device-manager" (Just val)
 
 data DeviceDeviceManagerPropertyInfo
 instance AttrInfo DeviceDeviceManagerPropertyInfo where
-    type AttrAllowedOps DeviceDeviceManagerPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps DeviceDeviceManagerPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint DeviceDeviceManagerPropertyInfo = DeviceManagerK
     type AttrBaseTypeConstraint DeviceDeviceManagerPropertyInfo = DeviceK
-    type AttrGetType DeviceDeviceManagerPropertyInfo = DeviceManager
+    type AttrGetType DeviceDeviceManagerPropertyInfo = (Maybe DeviceManager)
     type AttrLabel DeviceDeviceManagerPropertyInfo = "device-manager"
     attrGet _ = getDeviceDeviceManager
     attrSet _ = undefined
     attrConstruct _ = constructDeviceDeviceManager
+    attrClear _ = undefined
 
 -- VVV Prop "display"
    -- Type: TInterface "Gdk" "Display"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just False,Nothing)
 
 getDeviceDisplay :: (MonadIO m, DeviceK o) => o -> m Display
-getDeviceDisplay obj = liftIO $ getObjectPropertyObject obj "display" Display
+getDeviceDisplay obj = liftIO $ checkUnexpectedNothing "getDeviceDisplay" $ getObjectPropertyObject obj "display" Display
 
 constructDeviceDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
-constructDeviceDisplay val = constructObjectPropertyObject "display" val
+constructDeviceDisplay val = constructObjectPropertyObject "display" (Just val)
 
 data DeviceDisplayPropertyInfo
 instance AttrInfo DeviceDisplayPropertyInfo where
-    type AttrAllowedOps DeviceDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps DeviceDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint DeviceDisplayPropertyInfo = DisplayK
     type AttrBaseTypeConstraint DeviceDisplayPropertyInfo = DeviceK
     type AttrGetType DeviceDisplayPropertyInfo = Display
@@ -426,10 +442,12 @@
     attrGet _ = getDeviceDisplay
     attrSet _ = undefined
     attrConstruct _ = constructDeviceDisplay
+    attrClear _ = undefined
 
 -- VVV Prop "has-cursor"
    -- Type: TBasicType TBoolean
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just False,Nothing)
 
 getDeviceHasCursor :: (MonadIO m, DeviceK o) => o -> m Bool
 getDeviceHasCursor obj = liftIO $ getObjectPropertyBool obj "has-cursor"
@@ -447,10 +465,12 @@
     attrGet _ = getDeviceHasCursor
     attrSet _ = undefined
     attrConstruct _ = constructDeviceHasCursor
+    attrClear _ = undefined
 
 -- VVV Prop "input-mode"
    -- Type: TInterface "Gdk" "InputMode"
    -- Flags: [PropertyReadable,PropertyWritable]
+   -- Nullable: (Nothing,Nothing)
 
 getDeviceInputMode :: (MonadIO m, DeviceK o) => o -> m InputMode
 getDeviceInputMode obj = liftIO $ getObjectPropertyEnum obj "input-mode"
@@ -471,10 +491,12 @@
     attrGet _ = getDeviceInputMode
     attrSet _ = setDeviceInputMode
     attrConstruct _ = constructDeviceInputMode
+    attrClear _ = undefined
 
 -- VVV Prop "input-source"
    -- Type: TInterface "Gdk" "InputSource"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Nothing,Nothing)
 
 getDeviceInputSource :: (MonadIO m, DeviceK o) => o -> m InputSource
 getDeviceInputSource obj = liftIO $ getObjectPropertyEnum obj "input-source"
@@ -492,13 +514,15 @@
     attrGet _ = getDeviceInputSource
     attrSet _ = undefined
     attrConstruct _ = constructDeviceInputSource
+    attrClear _ = undefined
 
 -- VVV Prop "n-axes"
-   -- Type: TBasicType TUInt32
+   -- Type: TBasicType TUInt
    -- Flags: [PropertyReadable]
+   -- Nullable: (Nothing,Nothing)
 
 getDeviceNAxes :: (MonadIO m, DeviceK o) => o -> m Word32
-getDeviceNAxes obj = liftIO $ getObjectPropertyCUInt obj "n-axes"
+getDeviceNAxes obj = liftIO $ getObjectPropertyUInt32 obj "n-axes"
 
 data DeviceNAxesPropertyInfo
 instance AttrInfo DeviceNAxesPropertyInfo where
@@ -510,20 +534,22 @@
     attrGet _ = getDeviceNAxes
     attrSet _ = undefined
     attrConstruct _ = undefined
+    attrClear _ = undefined
 
 -- VVV Prop "name"
    -- Type: TBasicType TUTF8
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just False,Nothing)
 
 getDeviceName :: (MonadIO m, DeviceK o) => o -> m T.Text
-getDeviceName obj = liftIO $ getObjectPropertyString obj "name"
+getDeviceName obj = liftIO $ checkUnexpectedNothing "getDeviceName" $ getObjectPropertyString obj "name"
 
 constructDeviceName :: T.Text -> IO ([Char], GValue)
-constructDeviceName val = constructObjectPropertyString "name" val
+constructDeviceName val = constructObjectPropertyString "name" (Just val)
 
 data DeviceNamePropertyInfo
 instance AttrInfo DeviceNamePropertyInfo where
-    type AttrAllowedOps DeviceNamePropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps DeviceNamePropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint DeviceNamePropertyInfo = (~) T.Text
     type AttrBaseTypeConstraint DeviceNamePropertyInfo = DeviceK
     type AttrGetType DeviceNamePropertyInfo = T.Text
@@ -531,31 +557,35 @@
     attrGet _ = getDeviceName
     attrSet _ = undefined
     attrConstruct _ = constructDeviceName
+    attrClear _ = undefined
 
 -- VVV Prop "product-id"
    -- Type: TBasicType TUTF8
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just True,Nothing)
 
-getDeviceProductId :: (MonadIO m, DeviceK o) => o -> m T.Text
+getDeviceProductId :: (MonadIO m, DeviceK o) => o -> m (Maybe T.Text)
 getDeviceProductId obj = liftIO $ getObjectPropertyString obj "product-id"
 
 constructDeviceProductId :: T.Text -> IO ([Char], GValue)
-constructDeviceProductId val = constructObjectPropertyString "product-id" val
+constructDeviceProductId val = constructObjectPropertyString "product-id" (Just val)
 
 data DeviceProductIdPropertyInfo
 instance AttrInfo DeviceProductIdPropertyInfo where
-    type AttrAllowedOps DeviceProductIdPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps DeviceProductIdPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint DeviceProductIdPropertyInfo = (~) T.Text
     type AttrBaseTypeConstraint DeviceProductIdPropertyInfo = DeviceK
-    type AttrGetType DeviceProductIdPropertyInfo = T.Text
+    type AttrGetType DeviceProductIdPropertyInfo = (Maybe T.Text)
     type AttrLabel DeviceProductIdPropertyInfo = "product-id"
     attrGet _ = getDeviceProductId
     attrSet _ = undefined
     attrConstruct _ = constructDeviceProductId
+    attrClear _ = undefined
 
 -- VVV Prop "type"
    -- Type: TInterface "Gdk" "DeviceType"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Nothing,Nothing)
 
 getDeviceType :: (MonadIO m, DeviceK o) => o -> m DeviceType
 getDeviceType obj = liftIO $ getObjectPropertyEnum obj "type"
@@ -573,31 +603,67 @@
     attrGet _ = getDeviceType
     attrSet _ = undefined
     attrConstruct _ = constructDeviceType
+    attrClear _ = undefined
 
 -- VVV Prop "vendor-id"
    -- Type: TBasicType TUTF8
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just True,Nothing)
 
-getDeviceVendorId :: (MonadIO m, DeviceK o) => o -> m T.Text
+getDeviceVendorId :: (MonadIO m, DeviceK o) => o -> m (Maybe T.Text)
 getDeviceVendorId obj = liftIO $ getObjectPropertyString obj "vendor-id"
 
 constructDeviceVendorId :: T.Text -> IO ([Char], GValue)
-constructDeviceVendorId val = constructObjectPropertyString "vendor-id" val
+constructDeviceVendorId val = constructObjectPropertyString "vendor-id" (Just val)
 
 data DeviceVendorIdPropertyInfo
 instance AttrInfo DeviceVendorIdPropertyInfo where
-    type AttrAllowedOps DeviceVendorIdPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps DeviceVendorIdPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint DeviceVendorIdPropertyInfo = (~) T.Text
     type AttrBaseTypeConstraint DeviceVendorIdPropertyInfo = DeviceK
-    type AttrGetType DeviceVendorIdPropertyInfo = T.Text
+    type AttrGetType DeviceVendorIdPropertyInfo = (Maybe T.Text)
     type AttrLabel DeviceVendorIdPropertyInfo = "vendor-id"
     attrGet _ = getDeviceVendorId
     attrSet _ = undefined
     attrConstruct _ = constructDeviceVendorId
+    attrClear _ = undefined
 
 type instance AttributeList Device = DeviceAttributeList
 type DeviceAttributeList = ('[ '("associatedDevice", DeviceAssociatedDevicePropertyInfo), '("deviceManager", DeviceDeviceManagerPropertyInfo), '("display", DeviceDisplayPropertyInfo), '("hasCursor", DeviceHasCursorPropertyInfo), '("inputMode", DeviceInputModePropertyInfo), '("inputSource", DeviceInputSourcePropertyInfo), '("nAxes", DeviceNAxesPropertyInfo), '("name", DeviceNamePropertyInfo), '("productId", DeviceProductIdPropertyInfo), '("type", DeviceTypePropertyInfo), '("vendorId", DeviceVendorIdPropertyInfo)] :: [(Symbol, *)])
 
+deviceAssociatedDevice :: AttrLabelProxy "associatedDevice"
+deviceAssociatedDevice = AttrLabelProxy
+
+deviceDeviceManager :: AttrLabelProxy "deviceManager"
+deviceDeviceManager = AttrLabelProxy
+
+deviceDisplay :: AttrLabelProxy "display"
+deviceDisplay = AttrLabelProxy
+
+deviceHasCursor :: AttrLabelProxy "hasCursor"
+deviceHasCursor = AttrLabelProxy
+
+deviceInputMode :: AttrLabelProxy "inputMode"
+deviceInputMode = AttrLabelProxy
+
+deviceInputSource :: AttrLabelProxy "inputSource"
+deviceInputSource = AttrLabelProxy
+
+deviceNAxes :: AttrLabelProxy "nAxes"
+deviceNAxes = AttrLabelProxy
+
+deviceName :: AttrLabelProxy "name"
+deviceName = AttrLabelProxy
+
+deviceProductId :: AttrLabelProxy "productId"
+deviceProductId = AttrLabelProxy
+
+deviceType :: AttrLabelProxy "type"
+deviceType = AttrLabelProxy
+
+deviceVendorId :: AttrLabelProxy "vendorId"
+deviceVendorId = AttrLabelProxy
+
 data DeviceChangedSignalInfo
 instance SignalInfo DeviceChangedSignalInfo where
     type HaskellCallbackType DeviceChangedSignalInfo = DeviceChangedCallback
@@ -610,7 +676,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Device"
+-- returnType : Just (TInterface "Gdk" "Device")
 -- throws : False
 -- Skip return : False
 
@@ -622,41 +688,42 @@
 deviceGetAssociatedDevice ::
     (MonadIO m, DeviceK a) =>
     a                                       -- _obj
-    -> m Device                             -- result
+    -> m (Maybe Device)                     -- result
 deviceGetAssociatedDevice _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_device_get_associated_device _obj'
-    checkUnexpectedReturnNULL "gdk_device_get_associated_device" result
-    result' <- (newObject Device) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Device) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data DeviceGetAssociatedDeviceMethodInfo
-instance (signature ~ (m Device), MonadIO m, DeviceK a) => MethodInfo DeviceGetAssociatedDeviceMethodInfo a signature where
+instance (signature ~ (m (Maybe Device)), MonadIO m, DeviceK a) => MethodInfo DeviceGetAssociatedDeviceMethodInfo a signature where
     overloadedMethod _ = deviceGetAssociatedDevice
 
 -- method Device::get_axis_use
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "AxisUse"
+-- returnType : Just (TInterface "Gdk" "AxisUse")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_device_get_axis_use" gdk_device_get_axis_use :: 
     Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
-    Word32 ->                               -- index_ : TBasicType TUInt32
+    Word32 ->                               -- index_ : TBasicType TUInt
     IO CUInt
 
 
 deviceGetAxisUse ::
     (MonadIO m, DeviceK a) =>
     a                                       -- _obj
-    -> Word32                               -- index
+    -> Word32                               -- index_
     -> m AxisUse                            -- result
-deviceGetAxisUse _obj index = liftIO $ do
+deviceGetAxisUse _obj index_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    result <- gdk_device_get_axis_use _obj' index
+    result <- gdk_device_get_axis_use _obj' index_
     let result' = (toEnum . fromIntegral) result
     touchManagedPtr _obj
     return result'
@@ -669,7 +736,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "DeviceType"
+-- returnType : Just (TInterface "Gdk" "DeviceType")
 -- throws : False
 -- Skip return : False
 
@@ -697,7 +764,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -726,7 +793,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -752,16 +819,16 @@
 
 -- method Device::get_key
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_device_get_key" gdk_device_get_key :: 
     Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
-    Word32 ->                               -- index_ : TBasicType TUInt32
-    Ptr Word32 ->                           -- keyval : TBasicType TUInt32
+    Word32 ->                               -- index_ : TBasicType TUInt
+    Ptr Word32 ->                           -- keyval : TBasicType TUInt
     Ptr CUInt ->                            -- modifiers : TInterface "Gdk" "ModifierType"
     IO CInt
 
@@ -769,13 +836,13 @@
 deviceGetKey ::
     (MonadIO m, DeviceK a) =>
     a                                       -- _obj
-    -> Word32                               -- index
+    -> Word32                               -- index_
     -> m (Bool,Word32,[ModifierType])       -- result
-deviceGetKey _obj index = liftIO $ do
+deviceGetKey _obj index_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     keyval <- allocMem :: IO (Ptr Word32)
     modifiers <- allocMem :: IO (Ptr CUInt)
-    result <- gdk_device_get_key _obj' index keyval modifiers
+    result <- gdk_device_get_key _obj' index_ keyval modifiers
     let result' = (/= 0) result
     keyval' <- peek keyval
     modifiers' <- peek modifiers
@@ -793,7 +860,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -822,7 +889,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "InputMode"
+-- returnType : Just (TInterface "Gdk" "InputMode")
 -- throws : False
 -- Skip return : False
 
@@ -850,7 +917,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -877,7 +944,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -904,7 +971,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -931,17 +998,17 @@
 
 -- method Device::get_position
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_device_get_position" gdk_device_get_position :: 
     Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
     Ptr (Ptr Screen) ->                     -- screen : TInterface "Gdk" "Screen"
-    Ptr Int32 ->                            -- x : TBasicType TInt32
-    Ptr Int32 ->                            -- y : TBasicType TInt32
+    Ptr Int32 ->                            -- x : TBasicType TInt
+    Ptr Int32 ->                            -- y : TBasicType TInt
     IO ()
 
 
@@ -973,7 +1040,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1015,7 +1082,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -1027,24 +1094,25 @@
 deviceGetProductId ::
     (MonadIO m, DeviceK a) =>
     a                                       -- _obj
-    -> m T.Text                             -- result
+    -> m (Maybe T.Text)                     -- result
 deviceGetProductId _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_device_get_product_id _obj'
-    checkUnexpectedReturnNULL "gdk_device_get_product_id" result
-    result' <- cstringToText result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- cstringToText result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data DeviceGetProductIdMethodInfo
-instance (signature ~ (m T.Text), MonadIO m, DeviceK a) => MethodInfo DeviceGetProductIdMethodInfo a signature where
+instance (signature ~ (m (Maybe T.Text)), MonadIO m, DeviceK a) => MethodInfo DeviceGetProductIdMethodInfo a signature where
     overloadedMethod _ = deviceGetProductId
 
 -- method Device::get_source
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "InputSource"
+-- returnType : Just (TInterface "Gdk" "InputSource")
 -- throws : False
 -- Skip return : False
 
@@ -1072,7 +1140,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -1084,61 +1152,63 @@
 deviceGetVendorId ::
     (MonadIO m, DeviceK a) =>
     a                                       -- _obj
-    -> m T.Text                             -- result
+    -> m (Maybe T.Text)                     -- result
 deviceGetVendorId _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_device_get_vendor_id _obj'
-    checkUnexpectedReturnNULL "gdk_device_get_vendor_id" result
-    result' <- cstringToText result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- cstringToText result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data DeviceGetVendorIdMethodInfo
-instance (signature ~ (m T.Text), MonadIO m, DeviceK a) => MethodInfo DeviceGetVendorIdMethodInfo a signature where
+instance (signature ~ (m (Maybe T.Text)), MonadIO m, DeviceK a) => MethodInfo DeviceGetVendorIdMethodInfo a signature where
     overloadedMethod _ = deviceGetVendorId
 
 -- method Device::get_window_at_position
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "win_x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "win_y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "win_x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "win_y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_device_get_window_at_position" gdk_device_get_window_at_position :: 
     Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
-    Ptr Int32 ->                            -- win_x : TBasicType TInt32
-    Ptr Int32 ->                            -- win_y : TBasicType TInt32
+    Ptr Int32 ->                            -- win_x : TBasicType TInt
+    Ptr Int32 ->                            -- win_y : TBasicType TInt
     IO (Ptr Window)
 
 
 deviceGetWindowAtPosition ::
     (MonadIO m, DeviceK a) =>
     a                                       -- _obj
-    -> m (Window,Int32,Int32)               -- result
+    -> m ((Maybe Window),Int32,Int32)       -- result
 deviceGetWindowAtPosition _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     winX <- allocMem :: IO (Ptr Int32)
     winY <- allocMem :: IO (Ptr Int32)
     result <- gdk_device_get_window_at_position _obj' winX winY
-    checkUnexpectedReturnNULL "gdk_device_get_window_at_position" result
-    result' <- (newObject Window) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Window) result'
+        return result''
     winX' <- peek winX
     winY' <- peek winY
     touchManagedPtr _obj
     freeMem winX
     freeMem winY
-    return (result', winX', winY')
+    return (maybeResult, winX', winY')
 
 data DeviceGetWindowAtPositionMethodInfo
-instance (signature ~ (m (Window,Int32,Int32)), MonadIO m, DeviceK a) => MethodInfo DeviceGetWindowAtPositionMethodInfo a signature where
+instance (signature ~ (m ((Maybe Window),Int32,Int32)), MonadIO m, DeviceK a) => MethodInfo DeviceGetWindowAtPositionMethodInfo a signature where
     overloadedMethod _ = deviceGetWindowAtPosition
 
 -- method Device::get_window_at_position_double
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "win_x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "win_y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -1152,14 +1222,15 @@
 deviceGetWindowAtPositionDouble ::
     (MonadIO m, DeviceK a) =>
     a                                       -- _obj
-    -> m (Window,Double,Double)             -- result
+    -> m ((Maybe Window),Double,Double)     -- result
 deviceGetWindowAtPositionDouble _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     winX <- allocMem :: IO (Ptr CDouble)
     winY <- allocMem :: IO (Ptr CDouble)
     result <- gdk_device_get_window_at_position_double _obj' winX winY
-    checkUnexpectedReturnNULL "gdk_device_get_window_at_position_double" result
-    result' <- (newObject Window) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Window) result'
+        return result''
     winX' <- peek winX
     let winX'' = realToFrac winX'
     winY' <- peek winY
@@ -1167,17 +1238,17 @@
     touchManagedPtr _obj
     freeMem winX
     freeMem winY
-    return (result', winX'', winY'')
+    return (maybeResult, winX'', winY'')
 
 data DeviceGetWindowAtPositionDoubleMethodInfo
-instance (signature ~ (m (Window,Double,Double)), MonadIO m, DeviceK a) => MethodInfo DeviceGetWindowAtPositionDoubleMethodInfo a signature where
+instance (signature ~ (m ((Maybe Window),Double,Double)), MonadIO m, DeviceK a) => MethodInfo DeviceGetWindowAtPositionDoubleMethodInfo a signature where
     overloadedMethod _ = deviceGetWindowAtPositionDouble
 
 -- method Device::grab
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "grab_ownership", argType = TInterface "Gdk" "GrabOwnership", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "owner_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "GrabStatus"
+-- returnType : Just (TInterface "Gdk" "GrabStatus")
 -- throws : False
 -- Skip return : False
 
@@ -1200,9 +1271,9 @@
     -> Bool                                 -- ownerEvents
     -> [EventMask]                          -- eventMask
     -> Maybe (c)                            -- cursor
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m GrabStatus                         -- result
-deviceGrab _obj window grabOwnership ownerEvents eventMask cursor time = liftIO $ do
+deviceGrab _obj window grabOwnership ownerEvents eventMask cursor time_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let window' = unsafeManagedPtrCastPtr window
     let grabOwnership' = (fromIntegral . fromEnum) grabOwnership
@@ -1213,7 +1284,7 @@
         Just jCursor -> do
             let jCursor' = unsafeManagedPtrCastPtr jCursor
             return jCursor'
-    result <- gdk_device_grab _obj' window' grabOwnership' ownerEvents' eventMask' maybeCursor time
+    result <- gdk_device_grab _obj' window' grabOwnership' ownerEvents' eventMask' maybeCursor time_
     let result' = (toEnum . fromIntegral) result
     touchManagedPtr _obj
     touchManagedPtr window
@@ -1228,7 +1299,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Atom")
+-- returnType : Just (TGList (TInterface "Gdk" "Atom"))
 -- throws : False
 -- Skip return : False
 
@@ -1244,7 +1315,6 @@
 deviceListAxes _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_device_list_axes _obj'
-    checkUnexpectedReturnNULL "gdk_device_list_axes" result
     -- XXX Wrapping a foreign struct/union with no known destructor, leak?
     result' <- unpackGList result
     result'' <- mapM (\x -> Atom <$> newForeignPtr_ x) result'
@@ -1260,7 +1330,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Device")
+-- returnType : Just (TGList (TInterface "Gdk" "Device"))
 -- throws : False
 -- Skip return : False
 
@@ -1276,7 +1346,6 @@
 deviceListSlaveDevices _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_device_list_slave_devices _obj'
-    checkUnexpectedReturnNULL "gdk_device_list_slave_devices" result
     result' <- unpackGList result
     result'' <- mapM (newObject Device) result'
     g_list_free result
@@ -1289,15 +1358,15 @@
 
 -- method Device::set_axis_use
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "use", argType = TInterface "Gdk" "AxisUse", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "use", argType = TInterface "Gdk" "AxisUse", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_device_set_axis_use" gdk_device_set_axis_use :: 
     Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
-    Word32 ->                               -- index_ : TBasicType TUInt32
+    Word32 ->                               -- index_ : TBasicType TUInt
     CUInt ->                                -- use : TInterface "Gdk" "AxisUse"
     IO ()
 
@@ -1305,13 +1374,13 @@
 deviceSetAxisUse ::
     (MonadIO m, DeviceK a) =>
     a                                       -- _obj
-    -> Word32                               -- index
+    -> Word32                               -- index_
     -> AxisUse                              -- use
     -> m ()                                 -- result
-deviceSetAxisUse _obj index use = liftIO $ do
+deviceSetAxisUse _obj index_ use = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let use' = (fromIntegral . fromEnum) use
-    gdk_device_set_axis_use _obj' index use'
+    gdk_device_set_axis_use _obj' index_ use'
     touchManagedPtr _obj
     return ()
 
@@ -1321,16 +1390,16 @@
 
 -- method Device::set_key
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_device_set_key" gdk_device_set_key :: 
     Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
-    Word32 ->                               -- index_ : TBasicType TUInt32
-    Word32 ->                               -- keyval : TBasicType TUInt32
+    Word32 ->                               -- index_ : TBasicType TUInt
+    Word32 ->                               -- keyval : TBasicType TUInt
     CUInt ->                                -- modifiers : TInterface "Gdk" "ModifierType"
     IO ()
 
@@ -1338,14 +1407,14 @@
 deviceSetKey ::
     (MonadIO m, DeviceK a) =>
     a                                       -- _obj
-    -> Word32                               -- index
+    -> Word32                               -- index_
     -> Word32                               -- keyval
     -> [ModifierType]                       -- modifiers
     -> m ()                                 -- result
-deviceSetKey _obj index keyval modifiers = liftIO $ do
+deviceSetKey _obj index_ keyval modifiers = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let modifiers' = gflagsToWord modifiers
-    gdk_device_set_key _obj' index keyval modifiers'
+    gdk_device_set_key _obj' index_ keyval modifiers'
     touchManagedPtr _obj
     return ()
 
@@ -1357,7 +1426,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mode", argType = TInterface "Gdk" "InputMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1388,7 +1457,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1401,11 +1470,11 @@
 deviceUngrab ::
     (MonadIO m, DeviceK a) =>
     a                                       -- _obj
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-deviceUngrab _obj time = liftIO $ do
+deviceUngrab _obj time_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    gdk_device_ungrab _obj' time
+    gdk_device_ungrab _obj' time_
     touchManagedPtr _obj
     return ()
 
@@ -1415,17 +1484,17 @@
 
 -- method Device::warp
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_device_warp" gdk_device_warp :: 
     Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
     Ptr Screen ->                           -- screen : TInterface "Gdk" "Screen"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
     IO ()
 
 
@@ -1452,7 +1521,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "grab_window", argType = TInterface "Gdk" "Window", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "owner_events", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/Device.hs-boot b/GI/Gdk/Objects/Device.hs-boot
--- a/GI/Gdk/Objects/Device.hs-boot
+++ b/GI/Gdk/Objects/Device.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.Device where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/DeviceManager.hs b/GI/Gdk/Objects/DeviceManager.hs
--- a/GI/Gdk/Objects/DeviceManager.hs
+++ b/GI/Gdk/Objects/DeviceManager.hs
@@ -38,6 +38,7 @@
 -- ** Display
     DeviceManagerDisplayPropertyInfo        ,
     constructDeviceManagerDisplay           ,
+    deviceManagerDisplay                    ,
     getDeviceManagerDisplay                 ,
 
 
@@ -84,9 +85,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -281,27 +282,32 @@
 -- VVV Prop "display"
    -- Type: TInterface "Gdk" "Display"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just True,Nothing)
 
-getDeviceManagerDisplay :: (MonadIO m, DeviceManagerK o) => o -> m Display
+getDeviceManagerDisplay :: (MonadIO m, DeviceManagerK o) => o -> m (Maybe Display)
 getDeviceManagerDisplay obj = liftIO $ getObjectPropertyObject obj "display" Display
 
 constructDeviceManagerDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
-constructDeviceManagerDisplay val = constructObjectPropertyObject "display" val
+constructDeviceManagerDisplay val = constructObjectPropertyObject "display" (Just val)
 
 data DeviceManagerDisplayPropertyInfo
 instance AttrInfo DeviceManagerDisplayPropertyInfo where
-    type AttrAllowedOps DeviceManagerDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps DeviceManagerDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint DeviceManagerDisplayPropertyInfo = DisplayK
     type AttrBaseTypeConstraint DeviceManagerDisplayPropertyInfo = DeviceManagerK
-    type AttrGetType DeviceManagerDisplayPropertyInfo = Display
+    type AttrGetType DeviceManagerDisplayPropertyInfo = (Maybe Display)
     type AttrLabel DeviceManagerDisplayPropertyInfo = "display"
     attrGet _ = getDeviceManagerDisplay
     attrSet _ = undefined
     attrConstruct _ = constructDeviceManagerDisplay
+    attrClear _ = undefined
 
 type instance AttributeList DeviceManager = DeviceManagerAttributeList
 type DeviceManagerAttributeList = ('[ '("display", DeviceManagerDisplayPropertyInfo)] :: [(Symbol, *)])
 
+deviceManagerDisplay :: AttrLabelProxy "display"
+deviceManagerDisplay = AttrLabelProxy
+
 data DeviceManagerDeviceAddedSignalInfo
 instance SignalInfo DeviceManagerDeviceAddedSignalInfo where
     type HaskellCallbackType DeviceManagerDeviceAddedSignalInfo = DeviceManagerDeviceAddedCallback
@@ -324,7 +330,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DeviceManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Device"
+-- returnType : Just (TInterface "Gdk" "Device")
 -- throws : False
 -- Skip return : False
 
@@ -353,7 +359,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DeviceManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -365,24 +371,25 @@
 deviceManagerGetDisplay ::
     (MonadIO m, DeviceManagerK a) =>
     a                                       -- _obj
-    -> m Display                            -- result
+    -> m (Maybe Display)                    -- result
 deviceManagerGetDisplay _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_device_manager_get_display _obj'
-    checkUnexpectedReturnNULL "gdk_device_manager_get_display" result
-    result' <- (newObject Display) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Display) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data DeviceManagerGetDisplayMethodInfo
-instance (signature ~ (m Display), MonadIO m, DeviceManagerK a) => MethodInfo DeviceManagerGetDisplayMethodInfo a signature where
+instance (signature ~ (m (Maybe Display)), MonadIO m, DeviceManagerK a) => MethodInfo DeviceManagerGetDisplayMethodInfo a signature where
     overloadedMethod _ = deviceManagerGetDisplay
 
 -- method DeviceManager::list_devices
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DeviceManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface "Gdk" "DeviceType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Device")
+-- returnType : Just (TGList (TInterface "Gdk" "Device"))
 -- throws : False
 -- Skip return : False
 
@@ -401,7 +408,6 @@
     let _obj' = unsafeManagedPtrCastPtr _obj
     let type_' = (fromIntegral . fromEnum) type_
     result <- gdk_device_manager_list_devices _obj' type_'
-    checkUnexpectedReturnNULL "gdk_device_manager_list_devices" result
     result' <- unpackGList result
     result'' <- mapM (newObject Device) result'
     g_list_free result
diff --git a/GI/Gdk/Objects/DeviceManager.hs-boot b/GI/Gdk/Objects/DeviceManager.hs-boot
--- a/GI/Gdk/Objects/DeviceManager.hs-boot
+++ b/GI/Gdk/Objects/DeviceManager.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.DeviceManager where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/Display.hs b/GI/Gdk/Objects/Display.hs
--- a/GI/Gdk/Objects/Display.hs
+++ b/GI/Gdk/Objects/Display.hs
@@ -250,9 +250,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -453,7 +453,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -480,7 +480,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -507,7 +507,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -539,7 +539,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -566,7 +566,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "AppLaunchContext"
+-- returnType : Just (TInterface "Gdk" "AppLaunchContext")
 -- throws : False
 -- Skip return : False
 
@@ -595,7 +595,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
@@ -622,7 +622,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -651,7 +651,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Screen"
+-- returnType : Just (TInterface "Gdk" "Screen")
 -- throws : False
 -- Skip return : False
 
@@ -680,7 +680,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "DeviceManager"
+-- returnType : Just (TInterface "Gdk" "DeviceManager")
 -- throws : False
 -- Skip return : False
 
@@ -692,24 +692,25 @@
 displayGetDeviceManager ::
     (MonadIO m, DisplayK a) =>
     a                                       -- _obj
-    -> m DeviceManager                      -- result
+    -> m (Maybe DeviceManager)              -- result
 displayGetDeviceManager _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_display_get_device_manager _obj'
-    checkUnexpectedReturnNULL "gdk_display_get_device_manager" result
-    result' <- (newObject DeviceManager) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject DeviceManager) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data DisplayGetDeviceManagerMethodInfo
-instance (signature ~ (m DeviceManager), MonadIO m, DisplayK a) => MethodInfo DisplayGetDeviceManagerMethodInfo a signature where
+instance (signature ~ (m (Maybe DeviceManager)), MonadIO m, DisplayK a) => MethodInfo DisplayGetDeviceManagerMethodInfo a signature where
     overloadedMethod _ = displayGetDeviceManager
 
 -- method Display::get_event
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Event"
+-- returnType : Just (TInterface "Gdk" "Event")
 -- throws : False
 -- Skip return : False
 
@@ -721,31 +722,32 @@
 displayGetEvent ::
     (MonadIO m, DisplayK a) =>
     a                                       -- _obj
-    -> m Event                              -- result
+    -> m (Maybe Event)                      -- result
 displayGetEvent _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_display_get_event _obj'
-    checkUnexpectedReturnNULL "gdk_display_get_event" result
-    result' <- (wrapBoxed Event) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed Event) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data DisplayGetEventMethodInfo
-instance (signature ~ (m Event), MonadIO m, DisplayK a) => MethodInfo DisplayGetEventMethodInfo a signature where
+instance (signature ~ (m (Maybe Event)), MonadIO m, DisplayK a) => MethodInfo DisplayGetEventMethodInfo a signature where
     overloadedMethod _ = displayGetEvent
 
 -- method Display::get_maximal_cursor_size
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "height", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "height", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_display_get_maximal_cursor_size" gdk_display_get_maximal_cursor_size :: 
     Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
-    Ptr Word32 ->                           -- width : TBasicType TUInt32
-    Ptr Word32 ->                           -- height : TBasicType TUInt32
+    Ptr Word32 ->                           -- width : TBasicType TUInt
+    Ptr Word32 ->                           -- height : TBasicType TUInt
     IO ()
 
 
@@ -773,7 +775,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -800,7 +802,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -827,17 +829,17 @@
 
 -- method Display::get_pointer
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_display_get_pointer" gdk_display_get_pointer :: 
     Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
     Ptr (Ptr Screen) ->                     -- screen : TInterface "Gdk" "Screen"
-    Ptr Int32 ->                            -- x : TBasicType TInt32
-    Ptr Int32 ->                            -- y : TBasicType TInt32
+    Ptr Int32 ->                            -- x : TBasicType TInt
+    Ptr Int32 ->                            -- y : TBasicType TInt
     Ptr CUInt ->                            -- mask : TInterface "Gdk" "ModifierType"
     IO ()
 
@@ -872,15 +874,15 @@
 
 -- method Display::get_screen
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen_num", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Screen"
+-- returnType : Just (TInterface "Gdk" "Screen")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_display_get_screen" gdk_display_get_screen :: 
     Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
-    Int32 ->                                -- screen_num : TBasicType TInt32
+    Int32 ->                                -- screen_num : TBasicType TInt
     IO (Ptr Screen)
 
 
@@ -903,46 +905,47 @@
 
 -- method Display::get_window_at_pointer
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "win_x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "win_y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "win_x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "win_y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_display_get_window_at_pointer" gdk_display_get_window_at_pointer :: 
     Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
-    Ptr Int32 ->                            -- win_x : TBasicType TInt32
-    Ptr Int32 ->                            -- win_y : TBasicType TInt32
+    Ptr Int32 ->                            -- win_x : TBasicType TInt
+    Ptr Int32 ->                            -- win_y : TBasicType TInt
     IO (Ptr Window)
 
 {-# DEPRECATED displayGetWindowAtPointer ["(Since version 3.0)","Use gdk_device_get_window_at_position() instead."]#-}
 displayGetWindowAtPointer ::
     (MonadIO m, DisplayK a) =>
     a                                       -- _obj
-    -> m (Window,Int32,Int32)               -- result
+    -> m ((Maybe Window),Int32,Int32)       -- result
 displayGetWindowAtPointer _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     winX <- allocMem :: IO (Ptr Int32)
     winY <- allocMem :: IO (Ptr Int32)
     result <- gdk_display_get_window_at_pointer _obj' winX winY
-    checkUnexpectedReturnNULL "gdk_display_get_window_at_pointer" result
-    result' <- (newObject Window) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Window) result'
+        return result''
     winX' <- peek winX
     winY' <- peek winY
     touchManagedPtr _obj
     freeMem winX
     freeMem winY
-    return (result', winX', winY')
+    return (maybeResult, winX', winY')
 
 data DisplayGetWindowAtPointerMethodInfo
-instance (signature ~ (m (Window,Int32,Int32)), MonadIO m, DisplayK a) => MethodInfo DisplayGetWindowAtPointerMethodInfo a signature where
+instance (signature ~ (m ((Maybe Window),Int32,Int32)), MonadIO m, DisplayK a) => MethodInfo DisplayGetWindowAtPointerMethodInfo a signature where
     overloadedMethod _ = displayGetWindowAtPointer
 
 -- method Display::has_pending
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -970,7 +973,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -998,7 +1001,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1011,11 +1014,11 @@
 displayKeyboardUngrab ::
     (MonadIO m, DisplayK a) =>
     a                                       -- _obj
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-displayKeyboardUngrab _obj time = liftIO $ do
+displayKeyboardUngrab _obj time_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    gdk_display_keyboard_ungrab _obj' time
+    gdk_display_keyboard_ungrab _obj' time_
     touchManagedPtr _obj
     return ()
 
@@ -1027,7 +1030,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Device")
+-- returnType : Just (TGList (TInterface "Gdk" "Device"))
 -- throws : False
 -- Skip return : False
 
@@ -1043,7 +1046,6 @@
 displayListDevices _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_display_list_devices _obj'
-    checkUnexpectedReturnNULL "gdk_display_list_devices" result
     result' <- unpackGList result
     result'' <- mapM (newObject Device) result'
     touchManagedPtr _obj
@@ -1057,7 +1059,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1088,7 +1090,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Event"
+-- returnType : Just (TInterface "Gdk" "Event")
 -- throws : False
 -- Skip return : False
 
@@ -1100,24 +1102,25 @@
 displayPeekEvent ::
     (MonadIO m, DisplayK a) =>
     a                                       -- _obj
-    -> m Event                              -- result
+    -> m (Maybe Event)                      -- result
 displayPeekEvent _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_display_peek_event _obj'
-    checkUnexpectedReturnNULL "gdk_display_peek_event" result
-    result' <- (wrapBoxed Event) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed Event) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data DisplayPeekEventMethodInfo
-instance (signature ~ (m Event), MonadIO m, DisplayK a) => MethodInfo DisplayPeekEventMethodInfo a signature where
+instance (signature ~ (m (Maybe Event)), MonadIO m, DisplayK a) => MethodInfo DisplayPeekEventMethodInfo a signature where
     overloadedMethod _ = displayPeekEvent
 
 -- method Display::pointer_is_grabbed
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1145,7 +1148,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1158,11 +1161,11 @@
 displayPointerUngrab ::
     (MonadIO m, DisplayK a) =>
     a                                       -- _obj
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> m ()                                 -- result
-displayPointerUngrab _obj time = liftIO $ do
+displayPointerUngrab _obj time_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    gdk_display_pointer_ungrab _obj' time
+    gdk_display_pointer_ungrab _obj' time_
     touchManagedPtr _obj
     return ()
 
@@ -1174,7 +1177,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1205,7 +1208,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1235,15 +1238,15 @@
 
 -- method Display::set_double_click_distance
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "distance", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "distance", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_display_set_double_click_distance" gdk_display_set_double_click_distance :: 
     Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
-    Word32 ->                               -- distance : TBasicType TUInt32
+    Word32 ->                               -- distance : TBasicType TUInt
     IO ()
 
 
@@ -1264,15 +1267,15 @@
 
 -- method Display::set_double_click_time
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "msec", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "msec", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_display_set_double_click_time" gdk_display_set_double_click_time :: 
     Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
-    Word32 ->                               -- msec : TBasicType TUInt32
+    Word32 ->                               -- msec : TBasicType TUInt
     IO ()
 
 
@@ -1293,9 +1296,9 @@
 
 -- method Display::store_clipboard
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "clipboard_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "targets", argType = TCArray False (-1) 4 (TInterface "Gdk" "Atom"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_targets", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
--- Lengths : [Arg {argCName = "n_targets", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "clipboard_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "targets", argType = TCArray False (-1) 4 (TInterface "Gdk" "Atom"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_targets", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : [Arg {argCName = "n_targets", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1304,7 +1307,7 @@
     Ptr Window ->                           -- clipboard_window : TInterface "Gdk" "Window"
     Word32 ->                               -- time_ : TBasicType TUInt32
     Ptr (Ptr Atom) ->                       -- targets : TCArray False (-1) 4 (TInterface "Gdk" "Atom")
-    Int32 ->                                -- n_targets : TBasicType TInt32
+    Int32 ->                                -- n_targets : TBasicType TInt
     IO ()
 
 
@@ -1312,16 +1315,16 @@
     (MonadIO m, DisplayK a, WindowK b) =>
     a                                       -- _obj
     -> b                                    -- clipboardWindow
-    -> Word32                               -- time
+    -> Word32                               -- time_
     -> [Atom]                               -- targets
     -> m ()                                 -- result
-displayStoreClipboard _obj clipboardWindow time targets = liftIO $ do
+displayStoreClipboard _obj clipboardWindow time_ targets = liftIO $ do
     let nTargets = fromIntegral $ length targets
     let _obj' = unsafeManagedPtrCastPtr _obj
     let clipboardWindow' = unsafeManagedPtrCastPtr clipboardWindow
     let targets' = map unsafeManagedPtrGetPtr targets
     targets'' <- packPtrArray targets'
-    gdk_display_store_clipboard _obj' clipboardWindow' time targets'' nTargets
+    gdk_display_store_clipboard _obj' clipboardWindow' time_ targets'' nTargets
     touchManagedPtr _obj
     touchManagedPtr clipboardWindow
     mapM_ touchManagedPtr targets
@@ -1336,7 +1339,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1364,7 +1367,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1392,7 +1395,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1420,7 +1423,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1448,7 +1451,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1476,7 +1479,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1504,7 +1507,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1532,7 +1535,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1557,17 +1560,17 @@
 
 -- method Display::warp_pointer
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_display_warp_pointer" gdk_display_warp_pointer :: 
     Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
     Ptr Screen ->                           -- screen : TInterface "Gdk" "Screen"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
     IO ()
 
 {-# DEPRECATED displayWarpPointer ["(Since version 3.0)","Use gdk_device_warp() instead."]#-}
@@ -1594,7 +1597,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -1604,18 +1607,19 @@
 
 displayGetDefault ::
     (MonadIO m) =>
-    m Display                               -- result
+    m (Maybe Display)                       -- result
 displayGetDefault  = liftIO $ do
     result <- gdk_display_get_default
-    checkUnexpectedReturnNULL "gdk_display_get_default" result
-    result' <- (newObject Display) result
-    return result'
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Display) result'
+        return result''
+    return maybeResult
 
 -- method Display::open
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "display_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -1627,20 +1631,21 @@
 displayOpen ::
     (MonadIO m) =>
     T.Text                                  -- displayName
-    -> m Display                            -- result
+    -> m (Maybe Display)                    -- result
 displayOpen displayName = liftIO $ do
     displayName' <- textToCString displayName
     result <- gdk_display_open displayName'
-    checkUnexpectedReturnNULL "gdk_display_open" result
-    result' <- (newObject Display) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Display) result'
+        return result''
     freeMem displayName'
-    return result'
+    return maybeResult
 
 -- method Display::open_default_libgtk_only
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -1650,11 +1655,12 @@
 {-# DEPRECATED displayOpenDefaultLibgtkOnly ["(Since version 3.16)","This symbol was never meant to be used outside","  of GTK+"]#-}
 displayOpenDefaultLibgtkOnly ::
     (MonadIO m) =>
-    m Display                               -- result
+    m (Maybe Display)                       -- result
 displayOpenDefaultLibgtkOnly  = liftIO $ do
     result <- gdk_display_open_default_libgtk_only
-    checkUnexpectedReturnNULL "gdk_display_open_default_libgtk_only" result
-    result' <- (newObject Display) result
-    return result'
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Display) result'
+        return result''
+    return maybeResult
 
 
diff --git a/GI/Gdk/Objects/Display.hs-boot b/GI/Gdk/Objects/Display.hs-boot
--- a/GI/Gdk/Objects/Display.hs-boot
+++ b/GI/Gdk/Objects/Display.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.Display where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/DisplayManager.hs b/GI/Gdk/Objects/DisplayManager.hs
--- a/GI/Gdk/Objects/DisplayManager.hs
+++ b/GI/Gdk/Objects/DisplayManager.hs
@@ -47,6 +47,7 @@
 -- ** DefaultDisplay
     DisplayManagerDefaultDisplayPropertyInfo,
     constructDisplayManagerDefaultDisplay   ,
+    displayManagerDefaultDisplay            ,
     getDisplayManagerDefaultDisplay         ,
     setDisplayManagerDefaultDisplay         ,
 
@@ -70,9 +71,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -184,30 +185,35 @@
 -- VVV Prop "default-display"
    -- Type: TInterface "Gdk" "Display"
    -- Flags: [PropertyReadable,PropertyWritable]
+   -- Nullable: (Just True,Just False)
 
-getDisplayManagerDefaultDisplay :: (MonadIO m, DisplayManagerK o) => o -> m Display
+getDisplayManagerDefaultDisplay :: (MonadIO m, DisplayManagerK o) => o -> m (Maybe Display)
 getDisplayManagerDefaultDisplay obj = liftIO $ getObjectPropertyObject obj "default-display" Display
 
 setDisplayManagerDefaultDisplay :: (MonadIO m, DisplayManagerK o, DisplayK a) => o -> a -> m ()
-setDisplayManagerDefaultDisplay obj val = liftIO $ setObjectPropertyObject obj "default-display" val
+setDisplayManagerDefaultDisplay obj val = liftIO $ setObjectPropertyObject obj "default-display" (Just val)
 
 constructDisplayManagerDefaultDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
-constructDisplayManagerDefaultDisplay val = constructObjectPropertyObject "default-display" val
+constructDisplayManagerDefaultDisplay val = constructObjectPropertyObject "default-display" (Just val)
 
 data DisplayManagerDefaultDisplayPropertyInfo
 instance AttrInfo DisplayManagerDefaultDisplayPropertyInfo where
     type AttrAllowedOps DisplayManagerDefaultDisplayPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
     type AttrSetTypeConstraint DisplayManagerDefaultDisplayPropertyInfo = DisplayK
     type AttrBaseTypeConstraint DisplayManagerDefaultDisplayPropertyInfo = DisplayManagerK
-    type AttrGetType DisplayManagerDefaultDisplayPropertyInfo = Display
+    type AttrGetType DisplayManagerDefaultDisplayPropertyInfo = (Maybe Display)
     type AttrLabel DisplayManagerDefaultDisplayPropertyInfo = "default-display"
     attrGet _ = getDisplayManagerDefaultDisplay
     attrSet _ = setDisplayManagerDefaultDisplay
     attrConstruct _ = constructDisplayManagerDefaultDisplay
+    attrClear _ = undefined
 
 type instance AttributeList DisplayManager = DisplayManagerAttributeList
 type DisplayManagerAttributeList = ('[ '("defaultDisplay", DisplayManagerDefaultDisplayPropertyInfo)] :: [(Symbol, *)])
 
+displayManagerDefaultDisplay :: AttrLabelProxy "defaultDisplay"
+displayManagerDefaultDisplay = AttrLabelProxy
+
 data DisplayManagerDisplayOpenedSignalInfo
 instance SignalInfo DisplayManagerDisplayOpenedSignalInfo where
     type HaskellCallbackType DisplayManagerDisplayOpenedSignalInfo = DisplayManagerDisplayOpenedCallback
@@ -220,7 +226,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -232,24 +238,25 @@
 displayManagerGetDefaultDisplay ::
     (MonadIO m, DisplayManagerK a) =>
     a                                       -- _obj
-    -> m Display                            -- result
+    -> m (Maybe Display)                    -- result
 displayManagerGetDefaultDisplay _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_display_manager_get_default_display _obj'
-    checkUnexpectedReturnNULL "gdk_display_manager_get_default_display" result
-    result' <- (newObject Display) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Display) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data DisplayManagerGetDefaultDisplayMethodInfo
-instance (signature ~ (m Display), MonadIO m, DisplayManagerK a) => MethodInfo DisplayManagerGetDefaultDisplayMethodInfo a signature where
+instance (signature ~ (m (Maybe Display)), MonadIO m, DisplayManagerK a) => MethodInfo DisplayManagerGetDefaultDisplayMethodInfo a signature where
     overloadedMethod _ = displayManagerGetDefaultDisplay
 
 -- method DisplayManager::list_displays
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGSList (TInterface "Gdk" "Display")
+-- returnType : Just (TGSList (TInterface "Gdk" "Display"))
 -- throws : False
 -- Skip return : False
 
@@ -265,7 +272,6 @@
 displayManagerListDisplays _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_display_manager_list_displays _obj'
-    checkUnexpectedReturnNULL "gdk_display_manager_list_displays" result
     result' <- unpackGSList result
     result'' <- mapM (newObject Display) result'
     g_slist_free result
@@ -280,7 +286,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -294,26 +300,27 @@
     (MonadIO m, DisplayManagerK a) =>
     a                                       -- _obj
     -> T.Text                               -- name
-    -> m Display                            -- result
+    -> m (Maybe Display)                    -- result
 displayManagerOpenDisplay _obj name = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     name' <- textToCString name
     result <- gdk_display_manager_open_display _obj' name'
-    checkUnexpectedReturnNULL "gdk_display_manager_open_display" result
-    result' <- (newObject Display) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Display) result'
+        return result''
     touchManagedPtr _obj
     freeMem name'
-    return result'
+    return maybeResult
 
 data DisplayManagerOpenDisplayMethodInfo
-instance (signature ~ (T.Text -> m Display), MonadIO m, DisplayManagerK a) => MethodInfo DisplayManagerOpenDisplayMethodInfo a signature where
+instance (signature ~ (T.Text -> m (Maybe Display)), MonadIO m, DisplayManagerK a) => MethodInfo DisplayManagerOpenDisplayMethodInfo a signature where
     overloadedMethod _ = displayManagerOpenDisplay
 
 -- method DisplayManager::set_default_display
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -344,7 +351,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "DisplayManager"
+-- returnType : Just (TInterface "Gdk" "DisplayManager")
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/DisplayManager.hs-boot b/GI/Gdk/Objects/DisplayManager.hs-boot
--- a/GI/Gdk/Objects/DisplayManager.hs-boot
+++ b/GI/Gdk/Objects/DisplayManager.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.DisplayManager where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/DragContext.hs b/GI/Gdk/Objects/DragContext.hs
--- a/GI/Gdk/Objects/DragContext.hs
+++ b/GI/Gdk/Objects/DragContext.hs
@@ -66,9 +66,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -150,7 +150,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "DragAction"
+-- returnType : Just (TInterface "Gdk" "DragAction")
 -- throws : False
 -- Skip return : False
 
@@ -178,7 +178,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -207,7 +207,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Device"
+-- returnType : Just (TInterface "Gdk" "Device")
 -- throws : False
 -- Skip return : False
 
@@ -236,7 +236,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "DragProtocol"
+-- returnType : Just (TInterface "Gdk" "DragProtocol")
 -- throws : False
 -- Skip return : False
 
@@ -264,7 +264,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "DragAction"
+-- returnType : Just (TInterface "Gdk" "DragAction")
 -- throws : False
 -- Skip return : False
 
@@ -292,7 +292,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -321,7 +321,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "DragAction"
+-- returnType : Just (TInterface "Gdk" "DragAction")
 -- throws : False
 -- Skip return : False
 
@@ -349,7 +349,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Atom")
+-- returnType : Just (TGList (TInterface "Gdk" "Atom"))
 -- throws : False
 -- Skip return : False
 
@@ -365,7 +365,6 @@
 dragContextListTargets _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_drag_context_list_targets _obj'
-    checkUnexpectedReturnNULL "gdk_drag_context_list_targets" result
     -- XXX Wrapping a foreign struct/union with no known destructor, leak?
     result' <- unpackGList result
     result'' <- mapM (\x -> Atom <$> newForeignPtr_ x) result'
@@ -380,7 +379,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/DragContext.hs-boot b/GI/Gdk/Objects/DragContext.hs-boot
--- a/GI/Gdk/Objects/DragContext.hs-boot
+++ b/GI/Gdk/Objects/DragContext.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.DragContext where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/FrameClock.hs b/GI/Gdk/Objects/FrameClock.hs
--- a/GI/Gdk/Objects/FrameClock.hs
+++ b/GI/Gdk/Objects/FrameClock.hs
@@ -153,9 +153,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -538,7 +538,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -565,7 +565,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -592,7 +592,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "FrameTimings"
+-- returnType : Just (TInterface "Gdk" "FrameTimings")
 -- throws : False
 -- Skip return : False
 
@@ -604,24 +604,25 @@
 frameClockGetCurrentTimings ::
     (MonadIO m, FrameClockK a) =>
     a                                       -- _obj
-    -> m FrameTimings                       -- result
+    -> m (Maybe FrameTimings)               -- result
 frameClockGetCurrentTimings _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_frame_clock_get_current_timings _obj'
-    checkUnexpectedReturnNULL "gdk_frame_clock_get_current_timings" result
-    result' <- (wrapBoxed FrameTimings) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed FrameTimings) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data FrameClockGetCurrentTimingsMethodInfo
-instance (signature ~ (m FrameTimings), MonadIO m, FrameClockK a) => MethodInfo FrameClockGetCurrentTimingsMethodInfo a signature where
+instance (signature ~ (m (Maybe FrameTimings)), MonadIO m, FrameClockK a) => MethodInfo FrameClockGetCurrentTimingsMethodInfo a signature where
     overloadedMethod _ = frameClockGetCurrentTimings
 
 -- method FrameClock::get_frame_counter
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt64
+-- returnType : Just (TBasicType TInt64)
 -- throws : False
 -- Skip return : False
 
@@ -648,7 +649,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt64
+-- returnType : Just (TBasicType TInt64)
 -- throws : False
 -- Skip return : False
 
@@ -675,7 +676,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt64
+-- returnType : Just (TBasicType TInt64)
 -- throws : False
 -- Skip return : False
 
@@ -702,7 +703,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "base_time", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "refresh_interval_return", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "presentation_time_return", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -735,7 +736,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "frame_counter", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "FrameTimings"
+-- returnType : Just (TInterface "Gdk" "FrameTimings")
 -- throws : False
 -- Skip return : False
 
@@ -749,24 +750,25 @@
     (MonadIO m, FrameClockK a) =>
     a                                       -- _obj
     -> Int64                                -- frameCounter
-    -> m FrameTimings                       -- result
+    -> m (Maybe FrameTimings)               -- result
 frameClockGetTimings _obj frameCounter = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_frame_clock_get_timings _obj' frameCounter
-    checkUnexpectedReturnNULL "gdk_frame_clock_get_timings" result
-    result' <- (wrapBoxed FrameTimings) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed FrameTimings) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data FrameClockGetTimingsMethodInfo
-instance (signature ~ (Int64 -> m FrameTimings), MonadIO m, FrameClockK a) => MethodInfo FrameClockGetTimingsMethodInfo a signature where
+instance (signature ~ (Int64 -> m (Maybe FrameTimings)), MonadIO m, FrameClockK a) => MethodInfo FrameClockGetTimingsMethodInfo a signature where
     overloadedMethod _ = frameClockGetTimings
 
 -- method FrameClock::request_phase
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "phase", argType = TInterface "Gdk" "FrameClockPhase", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/FrameClock.hs-boot b/GI/Gdk/Objects/FrameClock.hs-boot
--- a/GI/Gdk/Objects/FrameClock.hs-boot
+++ b/GI/Gdk/Objects/FrameClock.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.FrameClock where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/GLContext.hs b/GI/Gdk/Objects/GLContext.hs
--- a/GI/Gdk/Objects/GLContext.hs
+++ b/GI/Gdk/Objects/GLContext.hs
@@ -17,10 +17,6 @@
 
 
  -- * Methods
--- ** Unsupported methods
-    GLContextGetRequiredVersionMethodInfo   ,
-
-
 -- ** gLContextClearCurrent
     gLContextClearCurrent                   ,
 
@@ -44,6 +40,11 @@
     gLContextGetForwardCompatible           ,
 
 
+-- ** gLContextGetRequiredVersion
+    GLContextGetRequiredVersionMethodInfo   ,
+    gLContextGetRequiredVersion             ,
+
+
 -- ** gLContextGetSharedContext
     GLContextGetSharedContextMethodInfo     ,
     gLContextGetSharedContext               ,
@@ -90,18 +91,21 @@
 -- ** Display
     GLContextDisplayPropertyInfo            ,
     constructGLContextDisplay               ,
+    gLContextDisplay                        ,
     getGLContextDisplay                     ,
 
 
 -- ** SharedContext
     GLContextSharedContextPropertyInfo      ,
     constructGLContextSharedContext         ,
+    gLContextSharedContext                  ,
     getGLContextSharedContext               ,
 
 
 -- ** Window
     GLContextWindowPropertyInfo             ,
     constructGLContextWindow                ,
+    gLContextWindow                         ,
     getGLContextWindow                      ,
 
 
@@ -109,9 +113,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -189,16 +193,17 @@
 -- VVV Prop "display"
    -- Type: TInterface "Gdk" "Display"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just False,Nothing)
 
 getGLContextDisplay :: (MonadIO m, GLContextK o) => o -> m Display
-getGLContextDisplay obj = liftIO $ getObjectPropertyObject obj "display" Display
+getGLContextDisplay obj = liftIO $ checkUnexpectedNothing "getGLContextDisplay" $ getObjectPropertyObject obj "display" Display
 
 constructGLContextDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
-constructGLContextDisplay val = constructObjectPropertyObject "display" val
+constructGLContextDisplay val = constructObjectPropertyObject "display" (Just val)
 
 data GLContextDisplayPropertyInfo
 instance AttrInfo GLContextDisplayPropertyInfo where
-    type AttrAllowedOps GLContextDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps GLContextDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint GLContextDisplayPropertyInfo = DisplayK
     type AttrBaseTypeConstraint GLContextDisplayPropertyInfo = GLContextK
     type AttrGetType GLContextDisplayPropertyInfo = Display
@@ -206,20 +211,22 @@
     attrGet _ = getGLContextDisplay
     attrSet _ = undefined
     attrConstruct _ = constructGLContextDisplay
+    attrClear _ = undefined
 
 -- VVV Prop "shared-context"
    -- Type: TInterface "Gdk" "GLContext"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just False,Nothing)
 
 getGLContextSharedContext :: (MonadIO m, GLContextK o) => o -> m GLContext
-getGLContextSharedContext obj = liftIO $ getObjectPropertyObject obj "shared-context" GLContext
+getGLContextSharedContext obj = liftIO $ checkUnexpectedNothing "getGLContextSharedContext" $ getObjectPropertyObject obj "shared-context" GLContext
 
 constructGLContextSharedContext :: (GLContextK a) => a -> IO ([Char], GValue)
-constructGLContextSharedContext val = constructObjectPropertyObject "shared-context" val
+constructGLContextSharedContext val = constructObjectPropertyObject "shared-context" (Just val)
 
 data GLContextSharedContextPropertyInfo
 instance AttrInfo GLContextSharedContextPropertyInfo where
-    type AttrAllowedOps GLContextSharedContextPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps GLContextSharedContextPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint GLContextSharedContextPropertyInfo = GLContextK
     type AttrBaseTypeConstraint GLContextSharedContextPropertyInfo = GLContextK
     type AttrGetType GLContextSharedContextPropertyInfo = GLContext
@@ -227,20 +234,22 @@
     attrGet _ = getGLContextSharedContext
     attrSet _ = undefined
     attrConstruct _ = constructGLContextSharedContext
+    attrClear _ = undefined
 
 -- VVV Prop "window"
    -- Type: TInterface "Gdk" "Window"
    -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+   -- Nullable: (Just False,Nothing)
 
 getGLContextWindow :: (MonadIO m, GLContextK o) => o -> m Window
-getGLContextWindow obj = liftIO $ getObjectPropertyObject obj "window" Window
+getGLContextWindow obj = liftIO $ checkUnexpectedNothing "getGLContextWindow" $ getObjectPropertyObject obj "window" Window
 
 constructGLContextWindow :: (WindowK a) => a -> IO ([Char], GValue)
-constructGLContextWindow val = constructObjectPropertyObject "window" val
+constructGLContextWindow val = constructObjectPropertyObject "window" (Just val)
 
 data GLContextWindowPropertyInfo
 instance AttrInfo GLContextWindowPropertyInfo where
-    type AttrAllowedOps GLContextWindowPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps GLContextWindowPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint GLContextWindowPropertyInfo = WindowK
     type AttrBaseTypeConstraint GLContextWindowPropertyInfo = GLContextK
     type AttrGetType GLContextWindowPropertyInfo = Window
@@ -248,10 +257,20 @@
     attrGet _ = getGLContextWindow
     attrSet _ = undefined
     attrConstruct _ = constructGLContextWindow
+    attrClear _ = undefined
 
 type instance AttributeList GLContext = GLContextAttributeList
 type GLContextAttributeList = ('[ '("display", GLContextDisplayPropertyInfo), '("sharedContext", GLContextSharedContextPropertyInfo), '("window", GLContextWindowPropertyInfo)] :: [(Symbol, *)])
 
+gLContextDisplay :: AttrLabelProxy "display"
+gLContextDisplay = AttrLabelProxy
+
+gLContextSharedContext :: AttrLabelProxy "sharedContext"
+gLContextSharedContext = AttrLabelProxy
+
+gLContextWindow :: AttrLabelProxy "window"
+gLContextWindow = AttrLabelProxy
+
 type instance SignalList GLContext = GLContextSignalList
 type GLContextSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo)] :: [(Symbol, *)])
 
@@ -259,7 +278,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -287,7 +306,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -316,7 +335,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -340,18 +359,46 @@
 instance (signature ~ (m Bool), MonadIO m, GLContextK a) => MethodInfo GLContextGetForwardCompatibleMethodInfo a signature where
     overloadedMethod _ = gLContextGetForwardCompatible
 
--- XXX Could not generate method GLContext::get_required_version
--- Error was : Bad introspection data: "argument \"major\" is not of nullable type (TBasicType TInt32), but it is marked as such."
--- XXX: Dummy instance, since code generation failed.
--- Please file a bug at http://github.com/haskell-gi/haskell-gi.
+-- method GLContext::get_required_version
+-- method type : OrdinaryMethod
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "major", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "minor", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : []
+-- returnType : Nothing
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "gdk_gl_context_get_required_version" gdk_gl_context_get_required_version :: 
+    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
+    Ptr Int32 ->                            -- major : TBasicType TInt
+    Ptr Int32 ->                            -- minor : TBasicType TInt
+    IO ()
+
+
+gLContextGetRequiredVersion ::
+    (MonadIO m, GLContextK a) =>
+    a                                       -- _obj
+    -> m (Int32,Int32)                      -- result
+gLContextGetRequiredVersion _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    major <- allocMem :: IO (Ptr Int32)
+    minor <- allocMem :: IO (Ptr Int32)
+    gdk_gl_context_get_required_version _obj' major minor
+    major' <- peek major
+    minor' <- peek minor
+    touchManagedPtr _obj
+    freeMem major
+    freeMem minor
+    return (major', minor')
+
 data GLContextGetRequiredVersionMethodInfo
-instance (p ~ (), o ~ MethodResolutionFailed "getRequiredVersion" GLContext) => MethodInfo GLContextGetRequiredVersionMethodInfo o p where
-    overloadedMethod _ = undefined
+instance (signature ~ (m (Int32,Int32)), MonadIO m, GLContextK a) => MethodInfo GLContextGetRequiredVersionMethodInfo a signature where
+    overloadedMethod _ = gLContextGetRequiredVersion
+
 -- method GLContext::get_shared_context
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "GLContext"
+-- returnType : Just (TInterface "Gdk" "GLContext")
 -- throws : False
 -- Skip return : False
 
@@ -378,16 +425,16 @@
 
 -- method GLContext::get_version
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "major", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "minor", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "major", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "minor", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_gl_context_get_version" gdk_gl_context_get_version :: 
     Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
-    Ptr Int32 ->                            -- major : TBasicType TInt32
-    Ptr Int32 ->                            -- minor : TBasicType TInt32
+    Ptr Int32 ->                            -- major : TBasicType TInt
+    Ptr Int32 ->                            -- minor : TBasicType TInt
     IO ()
 
 
@@ -415,7 +462,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -444,7 +491,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -471,7 +518,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : True
 -- Skip return : False
 
@@ -503,7 +550,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "enabled", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -533,7 +580,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "compatible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -561,16 +608,16 @@
 
 -- method GLContext::set_required_version
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "major", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "minor", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "major", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "minor", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_gl_context_set_required_version" gdk_gl_context_set_required_version :: 
     Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
-    Int32 ->                                -- major : TBasicType TInt32
-    Int32 ->                                -- minor : TBasicType TInt32
+    Int32 ->                                -- major : TBasicType TInt
+    Int32 ->                                -- minor : TBasicType TInt
     IO ()
 
 
@@ -594,7 +641,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -613,7 +660,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "GLContext"
+-- returnType : Just (TInterface "Gdk" "GLContext")
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/GLContext.hs-boot b/GI/Gdk/Objects/GLContext.hs-boot
--- a/GI/Gdk/Objects/GLContext.hs-boot
+++ b/GI/Gdk/Objects/GLContext.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.GLContext where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/Keymap.hs b/GI/Gdk/Objects/Keymap.hs
--- a/GI/Gdk/Objects/Keymap.hs
+++ b/GI/Gdk/Objects/Keymap.hs
@@ -133,9 +133,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -351,7 +351,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -386,7 +386,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -414,7 +414,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Direction"
+-- returnType : Just (TInterface "Pango" "Direction")
 -- throws : False
 -- Skip return : False
 
@@ -440,18 +440,18 @@
 
 -- method Keymap::get_entries_for_keycode
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "hardware_keycode", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keys", argType = TCArray False (-1) 4 (TInterface "Gdk" "KeymapKey"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "keyvals", argType = TCArray False (-1) 4 (TBasicType TUInt32), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_entries", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_entries", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_entries", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TBoolean
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "hardware_keycode", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keys", argType = TCArray False (-1) 4 (TInterface "Gdk" "KeymapKey"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "keyvals", argType = TCArray False (-1) 4 (TBasicType TUInt), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_entries", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_entries", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_entries", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_keymap_get_entries_for_keycode" gdk_keymap_get_entries_for_keycode :: 
     Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
-    Word32 ->                               -- hardware_keycode : TBasicType TUInt32
+    Word32 ->                               -- hardware_keycode : TBasicType TUInt
     Ptr (Ptr KeymapKey) ->                  -- keys : TCArray False (-1) 4 (TInterface "Gdk" "KeymapKey")
-    Ptr (Ptr Word32) ->                     -- keyvals : TCArray False (-1) 4 (TBasicType TUInt32)
-    Ptr Int32 ->                            -- n_entries : TBasicType TInt32
+    Ptr (Ptr Word32) ->                     -- keyvals : TCArray False (-1) 4 (TBasicType TUInt)
+    Ptr Int32 ->                            -- n_entries : TBasicType TInt
     IO CInt
 
 
@@ -487,17 +487,17 @@
 
 -- method Keymap::get_entries_for_keyval
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keys", argType = TCArray False (-1) 3 (TInterface "Gdk" "KeymapKey"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_keys", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_keys", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TBoolean
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keys", argType = TCArray False (-1) 3 (TInterface "Gdk" "KeymapKey"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_keys", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_keys", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_keymap_get_entries_for_keyval" gdk_keymap_get_entries_for_keyval :: 
     Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
-    Word32 ->                               -- keyval : TBasicType TUInt32
+    Word32 ->                               -- keyval : TBasicType TUInt
     Ptr (Ptr KeymapKey) ->                  -- keys : TCArray False (-1) 3 (TInterface "Gdk" "KeymapKey")
-    Ptr Int32 ->                            -- n_keys : TBasicType TInt32
+    Ptr Int32 ->                            -- n_keys : TBasicType TInt
     IO CInt
 
 
@@ -530,7 +530,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "intent", argType = TInterface "Gdk" "ModifierIntent", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "ModifierType"
+-- returnType : Just (TInterface "Gdk" "ModifierType")
 -- throws : False
 -- Skip return : False
 
@@ -561,7 +561,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
@@ -588,7 +588,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -616,7 +616,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -644,7 +644,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -672,7 +672,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TInterface "Gdk" "KeymapKey", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
@@ -703,7 +703,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -737,20 +737,20 @@
 
 -- method Keymap::translate_keyboard_state
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "hardware_keycode", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "group", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "effective_group", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "level", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "consumed_modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "hardware_keycode", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "group", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "effective_group", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "level", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "consumed_modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_keymap_translate_keyboard_state" gdk_keymap_translate_keyboard_state :: 
     Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
-    Word32 ->                               -- hardware_keycode : TBasicType TUInt32
+    Word32 ->                               -- hardware_keycode : TBasicType TUInt
     CUInt ->                                -- state : TInterface "Gdk" "ModifierType"
-    Int32 ->                                -- group : TBasicType TInt32
-    Ptr Word32 ->                           -- keyval : TBasicType TUInt32
-    Ptr Int32 ->                            -- effective_group : TBasicType TInt32
-    Ptr Int32 ->                            -- level : TBasicType TInt32
+    Int32 ->                                -- group : TBasicType TInt
+    Ptr Word32 ->                           -- keyval : TBasicType TUInt
+    Ptr Int32 ->                            -- effective_group : TBasicType TInt
+    Ptr Int32 ->                            -- level : TBasicType TInt
     Ptr CUInt ->                            -- consumed_modifiers : TInterface "Gdk" "ModifierType"
     IO CInt
 
@@ -791,7 +791,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "Keymap"
+-- returnType : Just (TInterface "Gdk" "Keymap")
 -- throws : False
 -- Skip return : False
 
@@ -812,7 +812,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Keymap"
+-- returnType : Just (TInterface "Gdk" "Keymap")
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/Keymap.hs-boot b/GI/Gdk/Objects/Keymap.hs-boot
--- a/GI/Gdk/Objects/Keymap.hs-boot
+++ b/GI/Gdk/Objects/Keymap.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.Keymap where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/Screen.hs b/GI/Gdk/Objects/Screen.hs
--- a/GI/Gdk/Objects/Screen.hs
+++ b/GI/Gdk/Objects/Screen.hs
@@ -194,6 +194,7 @@
     ScreenFontOptionsPropertyInfo           ,
     constructScreenFontOptions              ,
     getScreenFontOptions                    ,
+    screenFontOptions                       ,
     setScreenFontOptions                    ,
 
 
@@ -201,6 +202,7 @@
     ScreenResolutionPropertyInfo            ,
     constructScreenResolution               ,
     getScreenResolution                     ,
+    screenResolution                        ,
     setScreenResolution                     ,
 
 
@@ -247,9 +249,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -458,16 +460,17 @@
     connectSignalFunPtr obj "size-changed" cb' after
 
 -- VVV Prop "font-options"
-   -- Type: TBasicType TVoid
+   -- Type: TBasicType TPtr
    -- Flags: [PropertyReadable,PropertyWritable]
+   -- Nullable: (Nothing,Nothing)
 
 getScreenFontOptions :: (MonadIO m, ScreenK o) => o -> m (Ptr ())
 getScreenFontOptions obj = liftIO $ getObjectPropertyPtr obj "font-options"
 
-setScreenFontOptions :: (MonadIO m, ScreenK o) => o -> (Ptr ()) -> m ()
+setScreenFontOptions :: (MonadIO m, ScreenK o) => o -> Ptr () -> m ()
 setScreenFontOptions obj val = liftIO $ setObjectPropertyPtr obj "font-options" val
 
-constructScreenFontOptions :: (Ptr ()) -> IO ([Char], GValue)
+constructScreenFontOptions :: Ptr () -> IO ([Char], GValue)
 constructScreenFontOptions val = constructObjectPropertyPtr "font-options" val
 
 data ScreenFontOptionsPropertyInfo
@@ -480,10 +483,12 @@
     attrGet _ = getScreenFontOptions
     attrSet _ = setScreenFontOptions
     attrConstruct _ = constructScreenFontOptions
+    attrClear _ = undefined
 
 -- VVV Prop "resolution"
    -- Type: TBasicType TDouble
    -- Flags: [PropertyReadable,PropertyWritable]
+   -- Nullable: (Just False,Just False)
 
 getScreenResolution :: (MonadIO m, ScreenK o) => o -> m Double
 getScreenResolution obj = liftIO $ getObjectPropertyDouble obj "resolution"
@@ -504,10 +509,17 @@
     attrGet _ = getScreenResolution
     attrSet _ = setScreenResolution
     attrConstruct _ = constructScreenResolution
+    attrClear _ = undefined
 
 type instance AttributeList Screen = ScreenAttributeList
 type ScreenAttributeList = ('[ '("fontOptions", ScreenFontOptionsPropertyInfo), '("resolution", ScreenResolutionPropertyInfo)] :: [(Symbol, *)])
 
+screenFontOptions :: AttrLabelProxy "fontOptions"
+screenFontOptions = AttrLabelProxy
+
+screenResolution :: AttrLabelProxy "resolution"
+screenResolution = AttrLabelProxy
+
 data ScreenCompositedChangedSignalInfo
 instance SignalInfo ScreenCompositedChangedSignalInfo where
     type HaskellCallbackType ScreenCompositedChangedSignalInfo = ScreenCompositedChangedCallback
@@ -530,7 +542,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -542,24 +554,25 @@
 screenGetActiveWindow ::
     (MonadIO m, ScreenK a) =>
     a                                       -- _obj
-    -> m Window                             -- result
+    -> m (Maybe Window)                     -- result
 screenGetActiveWindow _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_screen_get_active_window _obj'
-    checkUnexpectedReturnNULL "gdk_screen_get_active_window" result
-    result' <- (wrapObject Window) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapObject Window) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data ScreenGetActiveWindowMethodInfo
-instance (signature ~ (m Window), MonadIO m, ScreenK a) => MethodInfo ScreenGetActiveWindowMethodInfo a signature where
+instance (signature ~ (m (Maybe Window)), MonadIO m, ScreenK a) => MethodInfo ScreenGetActiveWindowMethodInfo a signature where
     overloadedMethod _ = screenGetActiveWindow
 
 -- method Screen::get_display
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -588,7 +601,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "FontOptions"
+-- returnType : Just (TInterface "cairo" "FontOptions")
 -- throws : False
 -- Skip return : False
 
@@ -600,25 +613,26 @@
 screenGetFontOptions ::
     (MonadIO m, ScreenK a) =>
     a                                       -- _obj
-    -> m Cairo.FontOptions                  -- result
+    -> m (Maybe Cairo.FontOptions)          -- result
 screenGetFontOptions _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_screen_get_font_options _obj'
-    checkUnexpectedReturnNULL "gdk_screen_get_font_options" result
-    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
-    result' <- (\x -> Cairo.FontOptions <$> newForeignPtr_ x) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        -- XXX Wrapping a foreign struct/union with no known destructor, leak?
+        result'' <- (\x -> Cairo.FontOptions <$> newForeignPtr_ x) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data ScreenGetFontOptionsMethodInfo
-instance (signature ~ (m Cairo.FontOptions), MonadIO m, ScreenK a) => MethodInfo ScreenGetFontOptionsMethodInfo a signature where
+instance (signature ~ (m (Maybe Cairo.FontOptions)), MonadIO m, ScreenK a) => MethodInfo ScreenGetFontOptionsMethodInfo a signature where
     overloadedMethod _ = screenGetFontOptions
 
 -- method Screen::get_height
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -645,7 +659,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -670,16 +684,16 @@
 
 -- method Screen::get_monitor_at_point
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_screen_get_monitor_at_point" gdk_screen_get_monitor_at_point :: 
     Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
     IO Int32
 
 
@@ -703,7 +717,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -732,15 +746,15 @@
 
 -- method Screen::get_monitor_geometry
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface "Gdk" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface "Gdk" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_screen_get_monitor_geometry" gdk_screen_get_monitor_geometry :: 
     Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
-    Int32 ->                                -- monitor_num : TBasicType TInt32
+    Int32 ->                                -- monitor_num : TBasicType TInt
     Ptr Rectangle ->                        -- dest : TInterface "Gdk" "Rectangle"
     IO ()
 
@@ -764,15 +778,15 @@
 
 -- method Screen::get_monitor_height_mm
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_screen_get_monitor_height_mm" gdk_screen_get_monitor_height_mm :: 
     Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
-    Int32 ->                                -- monitor_num : TBasicType TInt32
+    Int32 ->                                -- monitor_num : TBasicType TInt
     IO Int32
 
 
@@ -793,15 +807,15 @@
 
 -- method Screen::get_monitor_plug_name
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_screen_get_monitor_plug_name" gdk_screen_get_monitor_plug_name :: 
     Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
-    Int32 ->                                -- monitor_num : TBasicType TInt32
+    Int32 ->                                -- monitor_num : TBasicType TInt
     IO CString
 
 
@@ -809,31 +823,32 @@
     (MonadIO m, ScreenK a) =>
     a                                       -- _obj
     -> Int32                                -- monitorNum
-    -> m T.Text                             -- result
+    -> m (Maybe T.Text)                     -- result
 screenGetMonitorPlugName _obj monitorNum = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_screen_get_monitor_plug_name _obj' monitorNum
-    checkUnexpectedReturnNULL "gdk_screen_get_monitor_plug_name" result
-    result' <- cstringToText result
-    freeMem result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- cstringToText result'
+        freeMem result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data ScreenGetMonitorPlugNameMethodInfo
-instance (signature ~ (Int32 -> m T.Text), MonadIO m, ScreenK a) => MethodInfo ScreenGetMonitorPlugNameMethodInfo a signature where
+instance (signature ~ (Int32 -> m (Maybe T.Text)), MonadIO m, ScreenK a) => MethodInfo ScreenGetMonitorPlugNameMethodInfo a signature where
     overloadedMethod _ = screenGetMonitorPlugName
 
 -- method Screen::get_monitor_scale_factor
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_screen_get_monitor_scale_factor" gdk_screen_get_monitor_scale_factor :: 
     Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
-    Int32 ->                                -- monitor_num : TBasicType TInt32
+    Int32 ->                                -- monitor_num : TBasicType TInt
     IO Int32
 
 
@@ -854,15 +869,15 @@
 
 -- method Screen::get_monitor_width_mm
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_screen_get_monitor_width_mm" gdk_screen_get_monitor_width_mm :: 
     Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
-    Int32 ->                                -- monitor_num : TBasicType TInt32
+    Int32 ->                                -- monitor_num : TBasicType TInt
     IO Int32
 
 
@@ -883,15 +898,15 @@
 
 -- method Screen::get_monitor_workarea
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface "Gdk" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor_num", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface "Gdk" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_screen_get_monitor_workarea" gdk_screen_get_monitor_workarea :: 
     Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
-    Int32 ->                                -- monitor_num : TBasicType TInt32
+    Int32 ->                                -- monitor_num : TBasicType TInt
     Ptr Rectangle ->                        -- dest : TInterface "Gdk" "Rectangle"
     IO ()
 
@@ -917,7 +932,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -944,7 +959,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -971,7 +986,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -998,7 +1013,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TDouble
+-- returnType : Just (TBasicType TDouble)
 -- throws : False
 -- Skip return : False
 
@@ -1026,7 +1041,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Visual"
+-- returnType : Just (TInterface "Gdk" "Visual")
 -- throws : False
 -- Skip return : False
 
@@ -1038,24 +1053,25 @@
 screenGetRgbaVisual ::
     (MonadIO m, ScreenK a) =>
     a                                       -- _obj
-    -> m Visual                             -- result
+    -> m (Maybe Visual)                     -- result
 screenGetRgbaVisual _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_screen_get_rgba_visual _obj'
-    checkUnexpectedReturnNULL "gdk_screen_get_rgba_visual" result
-    result' <- (newObject Visual) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Visual) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data ScreenGetRgbaVisualMethodInfo
-instance (signature ~ (m Visual), MonadIO m, ScreenK a) => MethodInfo ScreenGetRgbaVisualMethodInfo a signature where
+instance (signature ~ (m (Maybe Visual)), MonadIO m, ScreenK a) => MethodInfo ScreenGetRgbaVisualMethodInfo a signature where
     overloadedMethod _ = screenGetRgbaVisual
 
 -- method Screen::get_root_window
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -1084,7 +1100,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface "GObject" "Value", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1120,7 +1136,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Visual"
+-- returnType : Just (TInterface "Gdk" "Visual")
 -- throws : False
 -- Skip return : False
 
@@ -1149,7 +1165,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Window")
+-- returnType : Just (TGList (TInterface "Gdk" "Window"))
 -- throws : False
 -- Skip return : False
 
@@ -1165,7 +1181,6 @@
 screenGetToplevelWindows _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_screen_get_toplevel_windows _obj'
-    checkUnexpectedReturnNULL "gdk_screen_get_toplevel_windows" result
     result' <- unpackGList result
     result'' <- mapM (newObject Window) result'
     g_list_free result
@@ -1180,7 +1195,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -1207,7 +1222,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -1234,7 +1249,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Window")
+-- returnType : Just (TGList (TInterface "Gdk" "Window"))
 -- throws : False
 -- Skip return : False
 
@@ -1250,7 +1265,6 @@
 screenGetWindowStack _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_screen_get_window_stack _obj'
-    checkUnexpectedReturnNULL "gdk_screen_get_window_stack" result
     result' <- unpackGList result
     result'' <- mapM (wrapObject Window) result'
     g_list_free result
@@ -1265,7 +1279,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1293,7 +1307,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Visual")
+-- returnType : Just (TGList (TInterface "Gdk" "Visual"))
 -- throws : False
 -- Skip return : False
 
@@ -1309,7 +1323,6 @@
 screenListVisuals _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_screen_list_visuals _obj'
-    checkUnexpectedReturnNULL "gdk_screen_list_visuals" result
     result' <- unpackGList result
     result'' <- mapM (newObject Visual) result'
     g_list_free result
@@ -1324,7 +1337,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -1354,7 +1367,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "options", argType = TInterface "cairo" "FontOptions", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1389,7 +1402,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dpi", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1419,7 +1432,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "Screen"
+-- returnType : Just (TInterface "Gdk" "Screen")
 -- throws : False
 -- Skip return : False
 
@@ -1429,18 +1442,19 @@
 
 screenGetDefault ::
     (MonadIO m) =>
-    m Screen                                -- result
+    m (Maybe Screen)                        -- result
 screenGetDefault  = liftIO $ do
     result <- gdk_screen_get_default
-    checkUnexpectedReturnNULL "gdk_screen_get_default" result
-    result' <- (newObject Screen) result
-    return result'
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Screen) result'
+        return result''
+    return maybeResult
 
 -- method Screen::height
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -1459,7 +1473,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -1478,7 +1492,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -1497,7 +1511,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/Screen.hs-boot b/GI/Gdk/Objects/Screen.hs-boot
--- a/GI/Gdk/Objects/Screen.hs-boot
+++ b/GI/Gdk/Objects/Screen.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.Screen where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/Visual.hs b/GI/Gdk/Objects/Visual.hs
--- a/GI/Gdk/Objects/Visual.hs
+++ b/GI/Gdk/Objects/Visual.hs
@@ -94,9 +94,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -178,7 +178,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -203,17 +203,17 @@
 
 -- method Visual::get_blue_pixel_details
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mask", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "shift", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "precision", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mask", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "shift", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "precision", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_visual_get_blue_pixel_details" gdk_visual_get_blue_pixel_details :: 
     Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
     Ptr Word32 ->                           -- mask : TBasicType TUInt32
-    Ptr Int32 ->                            -- shift : TBasicType TInt32
-    Ptr Int32 ->                            -- precision : TBasicType TInt32
+    Ptr Int32 ->                            -- shift : TBasicType TInt
+    Ptr Int32 ->                            -- precision : TBasicType TInt
     IO ()
 
 
@@ -244,7 +244,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "ByteOrder"
+-- returnType : Just (TInterface "Gdk" "ByteOrder")
 -- throws : False
 -- Skip return : False
 
@@ -272,7 +272,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -299,7 +299,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -324,17 +324,17 @@
 
 -- method Visual::get_green_pixel_details
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mask", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "shift", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "precision", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mask", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "shift", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "precision", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_visual_get_green_pixel_details" gdk_visual_get_green_pixel_details :: 
     Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
     Ptr Word32 ->                           -- mask : TBasicType TUInt32
-    Ptr Int32 ->                            -- shift : TBasicType TInt32
-    Ptr Int32 ->                            -- precision : TBasicType TInt32
+    Ptr Int32 ->                            -- shift : TBasicType TInt
+    Ptr Int32 ->                            -- precision : TBasicType TInt
     IO ()
 
 
@@ -363,17 +363,17 @@
 
 -- method Visual::get_red_pixel_details
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mask", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "shift", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "precision", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mask", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "shift", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "precision", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_visual_get_red_pixel_details" gdk_visual_get_red_pixel_details :: 
     Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
     Ptr Word32 ->                           -- mask : TBasicType TUInt32
-    Ptr Int32 ->                            -- shift : TBasicType TInt32
-    Ptr Int32 ->                            -- precision : TBasicType TInt32
+    Ptr Int32 ->                            -- shift : TBasicType TInt
+    Ptr Int32 ->                            -- precision : TBasicType TInt
     IO ()
 
 
@@ -404,7 +404,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Screen"
+-- returnType : Just (TInterface "Gdk" "Screen")
 -- throws : False
 -- Skip return : False
 
@@ -433,7 +433,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "VisualType"
+-- returnType : Just (TInterface "Gdk" "VisualType")
 -- throws : False
 -- Skip return : False
 
@@ -461,7 +461,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "Visual"
+-- returnType : Just (TInterface "Gdk" "Visual")
 -- throws : False
 -- Skip return : False
 
@@ -482,7 +482,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -501,7 +501,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "VisualType"
+-- returnType : Just (TInterface "Gdk" "VisualType")
 -- throws : False
 -- Skip return : False
 
@@ -519,14 +519,14 @@
 
 -- method Visual::get_best_with_both
 -- method type : MemberFunction
--- Args : [Arg {argCName = "depth", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "visual_type", argType = TInterface "Gdk" "VisualType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "depth", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "visual_type", argType = TInterface "Gdk" "VisualType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Visual"
+-- returnType : Just (TInterface "Gdk" "Visual")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_visual_get_best_with_both" gdk_visual_get_best_with_both :: 
-    Int32 ->                                -- depth : TBasicType TInt32
+    Int32 ->                                -- depth : TBasicType TInt
     CUInt ->                                -- visual_type : TInterface "Gdk" "VisualType"
     IO (Ptr Visual)
 
@@ -535,24 +535,25 @@
     (MonadIO m) =>
     Int32                                   -- depth
     -> VisualType                           -- visualType
-    -> m Visual                             -- result
+    -> m (Maybe Visual)                     -- result
 visualGetBestWithBoth depth visualType = liftIO $ do
     let visualType' = (fromIntegral . fromEnum) visualType
     result <- gdk_visual_get_best_with_both depth visualType'
-    checkUnexpectedReturnNULL "gdk_visual_get_best_with_both" result
-    result' <- (newObject Visual) result
-    return result'
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Visual) result'
+        return result''
+    return maybeResult
 
 -- method Visual::get_best_with_depth
 -- method type : MemberFunction
--- Args : [Arg {argCName = "depth", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "depth", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Visual"
+-- returnType : Just (TInterface "Gdk" "Visual")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_visual_get_best_with_depth" gdk_visual_get_best_with_depth :: 
-    Int32 ->                                -- depth : TBasicType TInt32
+    Int32 ->                                -- depth : TBasicType TInt
     IO (Ptr Visual)
 
 
@@ -570,7 +571,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "visual_type", argType = TInterface "Gdk" "VisualType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Visual"
+-- returnType : Just (TInterface "Gdk" "Visual")
 -- throws : False
 -- Skip return : False
 
@@ -594,7 +595,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "Visual"
+-- returnType : Just (TInterface "Gdk" "Visual")
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/Visual.hs-boot b/GI/Gdk/Objects/Visual.hs-boot
--- a/GI/Gdk/Objects/Visual.hs-boot
+++ b/GI/Gdk/Objects/Visual.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.Visual where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Objects/Window.hs b/GI/Gdk/Objects/Window.hs
--- a/GI/Gdk/Objects/Window.hs
+++ b/GI/Gdk/Objects/Window.hs
@@ -797,9 +797,11 @@
  -- * Properties
 -- ** Cursor
     WindowCursorPropertyInfo                ,
+    clearWindowCursor                       ,
     constructWindowCursor                   ,
     getWindowCursor                         ,
     setWindowCursor                         ,
+    windowCursor                            ,
 
 
 
@@ -857,9 +859,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -1179,7 +1181,7 @@
 type WindowPickEmbeddedChildCallback =
     Double ->
     Double ->
-    IO Window
+    IO (Maybe Window)
 
 noWindowPickEmbeddedChildCallback :: Maybe WindowPickEmbeddedChildCallback
 noWindowPickEmbeddedChildCallback = Nothing
@@ -1209,8 +1211,9 @@
     let x' = realToFrac x
     let y' = realToFrac y
     result <- _cb  x' y'
-    let result' = unsafeManagedPtrCastPtr result
-    return result'
+    maybeM nullPtr result $ \result' -> do
+        let result'' = unsafeManagedPtrCastPtr result'
+        return result''
 
 onWindowPickEmbeddedChild :: (GObject a, MonadIO m) => a -> WindowPickEmbeddedChildCallback -> m SignalHandlerId
 onWindowPickEmbeddedChild obj cb = liftIO $ connectWindowPickEmbeddedChild obj cb SignalConnectBefore
@@ -1280,30 +1283,38 @@
 -- VVV Prop "cursor"
    -- Type: TInterface "Gdk" "Cursor"
    -- Flags: [PropertyReadable,PropertyWritable]
+   -- Nullable: (Just True,Just True)
 
-getWindowCursor :: (MonadIO m, WindowK o) => o -> m Cursor
+getWindowCursor :: (MonadIO m, WindowK o) => o -> m (Maybe Cursor)
 getWindowCursor obj = liftIO $ getObjectPropertyObject obj "cursor" Cursor
 
 setWindowCursor :: (MonadIO m, WindowK o, CursorK a) => o -> a -> m ()
-setWindowCursor obj val = liftIO $ setObjectPropertyObject obj "cursor" val
+setWindowCursor obj val = liftIO $ setObjectPropertyObject obj "cursor" (Just val)
 
 constructWindowCursor :: (CursorK a) => a -> IO ([Char], GValue)
-constructWindowCursor val = constructObjectPropertyObject "cursor" val
+constructWindowCursor val = constructObjectPropertyObject "cursor" (Just val)
 
+clearWindowCursor :: (MonadIO m, WindowK o) => o -> m ()
+clearWindowCursor obj = liftIO $ setObjectPropertyObject obj "cursor" (Nothing :: Maybe Cursor)
+
 data WindowCursorPropertyInfo
 instance AttrInfo WindowCursorPropertyInfo where
-    type AttrAllowedOps WindowCursorPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrAllowedOps WindowCursorPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
     type AttrSetTypeConstraint WindowCursorPropertyInfo = CursorK
     type AttrBaseTypeConstraint WindowCursorPropertyInfo = WindowK
-    type AttrGetType WindowCursorPropertyInfo = Cursor
+    type AttrGetType WindowCursorPropertyInfo = (Maybe Cursor)
     type AttrLabel WindowCursorPropertyInfo = "cursor"
     attrGet _ = getWindowCursor
     attrSet _ = setWindowCursor
     attrConstruct _ = constructWindowCursor
+    attrClear _ = clearWindowCursor
 
 type instance AttributeList Window = WindowAttributeList
 type WindowAttributeList = ('[ '("cursor", WindowCursorPropertyInfo)] :: [(Symbol, *)])
 
+windowCursor :: AttrLabelProxy "cursor"
+windowCursor = AttrLabelProxy
+
 data WindowCreateSurfaceSignalInfo
 instance SignalInfo WindowCreateSurfaceSignalInfo where
     type HaskellCallbackType WindowCreateSurfaceSignalInfo = WindowCreateSurfaceCallback
@@ -1331,7 +1342,7 @@
 -- method type : Constructor
 -- Args : [Arg {argCName = "parent", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attributes", argType = TInterface "Gdk" "WindowAttr", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attributes_mask", argType = TInterface "Gdk" "WindowAttributesType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -1367,7 +1378,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1392,17 +1403,17 @@
 
 -- method Window::begin_move_drag
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_begin_move_drag" gdk_window_begin_move_drag :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Int32 ->                                -- button : TBasicType TInt32
-    Int32 ->                                -- root_x : TBasicType TInt32
-    Int32 ->                                -- root_y : TBasicType TInt32
+    Int32 ->                                -- button : TBasicType TInt
+    Int32 ->                                -- root_x : TBasicType TInt
+    Int32 ->                                -- root_y : TBasicType TInt
     Word32 ->                               -- timestamp : TBasicType TUInt32
     IO ()
 
@@ -1427,18 +1438,18 @@
 
 -- method Window::begin_move_drag_for_device
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_begin_move_drag_for_device" gdk_window_begin_move_drag_for_device :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
     Ptr Device ->                           -- device : TInterface "Gdk" "Device"
-    Int32 ->                                -- button : TBasicType TInt32
-    Int32 ->                                -- root_x : TBasicType TInt32
-    Int32 ->                                -- root_y : TBasicType TInt32
+    Int32 ->                                -- button : TBasicType TInt
+    Int32 ->                                -- root_x : TBasicType TInt
+    Int32 ->                                -- root_y : TBasicType TInt
     Word32 ->                               -- timestamp : TBasicType TUInt32
     IO ()
 
@@ -1468,7 +1479,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rectangle", argType = TInterface "Gdk" "Rectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1499,7 +1510,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1528,18 +1539,18 @@
 
 -- method Window::begin_resize_drag
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "edge", argType = TInterface "Gdk" "WindowEdge", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "edge", argType = TInterface "Gdk" "WindowEdge", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_begin_resize_drag" gdk_window_begin_resize_drag :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
     CUInt ->                                -- edge : TInterface "Gdk" "WindowEdge"
-    Int32 ->                                -- button : TBasicType TInt32
-    Int32 ->                                -- root_x : TBasicType TInt32
-    Int32 ->                                -- root_y : TBasicType TInt32
+    Int32 ->                                -- button : TBasicType TInt
+    Int32 ->                                -- root_x : TBasicType TInt
+    Int32 ->                                -- root_y : TBasicType TInt
     Word32 ->                               -- timestamp : TBasicType TUInt32
     IO ()
 
@@ -1566,9 +1577,9 @@
 
 -- method Window::begin_resize_drag_for_device
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "edge", argType = TInterface "Gdk" "WindowEdge", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "edge", argType = TInterface "Gdk" "WindowEdge", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1576,9 +1587,9 @@
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
     CUInt ->                                -- edge : TInterface "Gdk" "WindowEdge"
     Ptr Device ->                           -- device : TInterface "Gdk" "Device"
-    Int32 ->                                -- button : TBasicType TInt32
-    Int32 ->                                -- root_x : TBasicType TInt32
-    Int32 ->                                -- root_y : TBasicType TInt32
+    Int32 ->                                -- button : TBasicType TInt
+    Int32 ->                                -- root_x : TBasicType TInt
+    Int32 ->                                -- root_y : TBasicType TInt
     Word32 ->                               -- timestamp : TBasicType TUInt32
     IO ()
 
@@ -1610,7 +1621,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1637,7 +1648,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "parent_x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "parent_y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1680,7 +1691,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "parent_x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "parent_y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1723,7 +1734,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "GLContext"
+-- returnType : Just (TInterface "Gdk" "GLContext")
 -- throws : True
 -- Skip return : False
 
@@ -1755,18 +1766,18 @@
 
 -- method Window::create_similar_image_surface
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scale", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scale", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Surface"
+-- returnType : Just (TInterface "cairo" "Surface")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_create_similar_image_surface" gdk_window_create_similar_image_surface :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Int32 ->                                -- format : TBasicType TInt32
-    Int32 ->                                -- width : TBasicType TInt32
-    Int32 ->                                -- height : TBasicType TInt32
-    Int32 ->                                -- scale : TBasicType TInt32
+    Int32 ->                                -- format : TBasicType TInt
+    Int32 ->                                -- width : TBasicType TInt
+    Int32 ->                                -- height : TBasicType TInt
+    Int32 ->                                -- scale : TBasicType TInt
     IO (Ptr Cairo.Surface)
 
 
@@ -1792,17 +1803,17 @@
 
 -- method Window::create_similar_surface
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "content", argType = TInterface "cairo" "Content", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "content", argType = TInterface "cairo" "Content", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Surface"
+-- returnType : Just (TInterface "cairo" "Surface")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_create_similar_surface" gdk_window_create_similar_surface :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
     CUInt ->                                -- content : TInterface "cairo" "Content"
-    Int32 ->                                -- width : TBasicType TInt32
-    Int32 ->                                -- height : TBasicType TInt32
+    Int32 ->                                -- width : TBasicType TInt
+    Int32 ->                                -- height : TBasicType TInt
     IO (Ptr Cairo.Surface)
 
 
@@ -1830,7 +1841,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1857,7 +1868,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1884,7 +1895,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1911,7 +1922,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1938,7 +1949,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1965,7 +1976,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1993,7 +2004,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2020,7 +2031,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2049,7 +2060,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2076,7 +2087,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2103,7 +2114,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2128,15 +2139,15 @@
 
 -- method Window::fullscreen_on_monitor
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "monitor", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_fullscreen_on_monitor" gdk_window_fullscreen_on_monitor :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Int32 ->                                -- monitor : TBasicType TInt32
+    Int32 ->                                -- monitor : TBasicType TInt
     IO ()
 
 
@@ -2159,7 +2170,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2186,7 +2197,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2214,7 +2225,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Pattern"
+-- returnType : Just (TInterface "cairo" "Pattern")
 -- throws : False
 -- Skip return : False
 
@@ -2226,24 +2237,25 @@
 windowGetBackgroundPattern ::
     (MonadIO m, WindowK a) =>
     a                                       -- _obj
-    -> m Cairo.Pattern                      -- result
+    -> m (Maybe Cairo.Pattern)              -- result
 windowGetBackgroundPattern _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_window_get_background_pattern _obj'
-    checkUnexpectedReturnNULL "gdk_window_get_background_pattern" result
-    result' <- (newBoxed Cairo.Pattern) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed Cairo.Pattern) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data WindowGetBackgroundPatternMethodInfo
-instance (signature ~ (m Cairo.Pattern), MonadIO m, WindowK a) => MethodInfo WindowGetBackgroundPatternMethodInfo a signature where
+instance (signature ~ (m (Maybe Cairo.Pattern)), MonadIO m, WindowK a) => MethodInfo WindowGetBackgroundPatternMethodInfo a signature where
     overloadedMethod _ = windowGetBackgroundPattern
 
 -- method Window::get_children
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Window")
+-- returnType : Just (TGList (TInterface "Gdk" "Window"))
 -- throws : False
 -- Skip return : False
 
@@ -2259,7 +2271,6 @@
 windowGetChildren _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_window_get_children _obj'
-    checkUnexpectedReturnNULL "gdk_window_get_children" result
     result' <- unpackGList result
     result'' <- mapM (newObject Window) result'
     g_list_free result
@@ -2272,15 +2283,15 @@
 
 -- method Window::get_children_with_user_data
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Window")
+-- returnType : Just (TGList (TInterface "Gdk" "Window"))
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_get_children_with_user_data" gdk_window_get_children_with_user_data :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Ptr () ->                               -- user_data : TBasicType TVoid
+    Ptr () ->                               -- user_data : TBasicType TPtr
     IO (Ptr (GList (Ptr Window)))
 
 
@@ -2292,7 +2303,6 @@
 windowGetChildrenWithUserData _obj userData = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_window_get_children_with_user_data _obj' userData
-    checkUnexpectedReturnNULL "gdk_window_get_children_with_user_data" result
     result' <- unpackGList result
     result'' <- mapM (newObject Window) result'
     g_list_free result
@@ -2307,7 +2317,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Region"
+-- returnType : Just (TInterface "cairo" "Region")
 -- throws : False
 -- Skip return : False
 
@@ -2336,7 +2346,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2364,7 +2374,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Cursor"
+-- returnType : Just (TInterface "Gdk" "Cursor")
 -- throws : False
 -- Skip return : False
 
@@ -2376,24 +2386,25 @@
 windowGetCursor ::
     (MonadIO m, WindowK a) =>
     a                                       -- _obj
-    -> m Cursor                             -- result
+    -> m (Maybe Cursor)                     -- result
 windowGetCursor _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_window_get_cursor _obj'
-    checkUnexpectedReturnNULL "gdk_window_get_cursor" result
-    result' <- (newObject Cursor) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Cursor) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data WindowGetCursorMethodInfo
-instance (signature ~ (m Cursor), MonadIO m, WindowK a) => MethodInfo WindowGetCursorMethodInfo a signature where
+instance (signature ~ (m (Maybe Cursor)), MonadIO m, WindowK a) => MethodInfo WindowGetCursorMethodInfo a signature where
     overloadedMethod _ = windowGetCursor
 
 -- method Window::get_decorations
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "decorations", argType = TInterface "Gdk" "WMDecoration", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2426,7 +2437,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Cursor"
+-- returnType : Just (TInterface "Gdk" "Cursor")
 -- throws : False
 -- Skip return : False
 
@@ -2440,26 +2451,27 @@
     (MonadIO m, WindowK a, DeviceK b) =>
     a                                       -- _obj
     -> b                                    -- device
-    -> m Cursor                             -- result
+    -> m (Maybe Cursor)                     -- result
 windowGetDeviceCursor _obj device = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let device' = unsafeManagedPtrCastPtr device
     result <- gdk_window_get_device_cursor _obj' device'
-    checkUnexpectedReturnNULL "gdk_window_get_device_cursor" result
-    result' <- (newObject Cursor) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Cursor) result'
+        return result''
     touchManagedPtr _obj
     touchManagedPtr device
-    return result'
+    return maybeResult
 
 data WindowGetDeviceCursorMethodInfo
-instance (signature ~ (b -> m Cursor), MonadIO m, WindowK a, DeviceK b) => MethodInfo WindowGetDeviceCursorMethodInfo a signature where
+instance (signature ~ (b -> m (Maybe Cursor)), MonadIO m, WindowK a, DeviceK b) => MethodInfo WindowGetDeviceCursorMethodInfo a signature where
     overloadedMethod _ = windowGetDeviceCursor
 
 -- method Window::get_device_events
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "EventMask"
+-- returnType : Just (TInterface "Gdk" "EventMask")
 -- throws : False
 -- Skip return : False
 
@@ -2489,17 +2501,17 @@
 
 -- method Window::get_device_position
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_get_device_position" gdk_window_get_device_position :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
     Ptr Device ->                           -- device : TInterface "Gdk" "Device"
-    Ptr Int32 ->                            -- x : TBasicType TInt32
-    Ptr Int32 ->                            -- y : TBasicType TInt32
+    Ptr Int32 ->                            -- x : TBasicType TInt
+    Ptr Int32 ->                            -- y : TBasicType TInt
     Ptr CUInt ->                            -- mask : TInterface "Gdk" "ModifierType"
     IO (Ptr Window)
 
@@ -2508,7 +2520,7 @@
     (MonadIO m, WindowK a, DeviceK b) =>
     a                                       -- _obj
     -> b                                    -- device
-    -> m (Window,Int32,Int32,[ModifierType])-- result
+    -> m ((Maybe Window),Int32,Int32,[ModifierType])-- result
 windowGetDevicePosition _obj device = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let device' = unsafeManagedPtrCastPtr device
@@ -2516,8 +2528,9 @@
     y <- allocMem :: IO (Ptr Int32)
     mask <- allocMem :: IO (Ptr CUInt)
     result <- gdk_window_get_device_position _obj' device' x y mask
-    checkUnexpectedReturnNULL "gdk_window_get_device_position" result
-    result' <- (newObject Window) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Window) result'
+        return result''
     x' <- peek x
     y' <- peek y
     mask' <- peek mask
@@ -2527,17 +2540,17 @@
     freeMem x
     freeMem y
     freeMem mask
-    return (result', x', y', mask'')
+    return (maybeResult, x', y', mask'')
 
 data WindowGetDevicePositionMethodInfo
-instance (signature ~ (b -> m (Window,Int32,Int32,[ModifierType])), MonadIO m, WindowK a, DeviceK b) => MethodInfo WindowGetDevicePositionMethodInfo a signature where
+instance (signature ~ (b -> m ((Maybe Window),Int32,Int32,[ModifierType])), MonadIO m, WindowK a, DeviceK b) => MethodInfo WindowGetDevicePositionMethodInfo a signature where
     overloadedMethod _ = windowGetDevicePosition
 
 -- method Window::get_device_position_double
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -2554,7 +2567,7 @@
     (MonadIO m, WindowK a, DeviceK b) =>
     a                                       -- _obj
     -> b                                    -- device
-    -> m (Window,Double,Double,[ModifierType])-- result
+    -> m ((Maybe Window),Double,Double,[ModifierType])-- result
 windowGetDevicePositionDouble _obj device = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let device' = unsafeManagedPtrCastPtr device
@@ -2562,8 +2575,9 @@
     y <- allocMem :: IO (Ptr CDouble)
     mask <- allocMem :: IO (Ptr CUInt)
     result <- gdk_window_get_device_position_double _obj' device' x y mask
-    checkUnexpectedReturnNULL "gdk_window_get_device_position_double" result
-    result' <- (newObject Window) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Window) result'
+        return result''
     x' <- peek x
     let x'' = realToFrac x'
     y' <- peek y
@@ -2575,17 +2589,17 @@
     freeMem x
     freeMem y
     freeMem mask
-    return (result', x'', y'', mask'')
+    return (maybeResult, x'', y'', mask'')
 
 data WindowGetDevicePositionDoubleMethodInfo
-instance (signature ~ (b -> m (Window,Double,Double,[ModifierType])), MonadIO m, WindowK a, DeviceK b) => MethodInfo WindowGetDevicePositionDoubleMethodInfo a signature where
+instance (signature ~ (b -> m ((Maybe Window),Double,Double,[ModifierType])), MonadIO m, WindowK a, DeviceK b) => MethodInfo WindowGetDevicePositionDoubleMethodInfo a signature where
     overloadedMethod _ = windowGetDevicePositionDouble
 
 -- method Window::get_display
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Display"
+-- returnType : Just (TInterface "Gdk" "Display")
 -- throws : False
 -- Skip return : False
 
@@ -2614,7 +2628,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target", argType = TInterface "Gdk" "Window", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "DragProtocol"
+-- returnType : Just (TInterface "Gdk" "DragProtocol")
 -- throws : False
 -- Skip return : False
 
@@ -2647,7 +2661,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -2676,7 +2690,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -2705,7 +2719,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2733,7 +2747,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "EventMask"
+-- returnType : Just (TInterface "Gdk" "EventMask")
 -- throws : False
 -- Skip return : False
 
@@ -2761,7 +2775,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -2789,7 +2803,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "FrameClock"
+-- returnType : Just (TInterface "Gdk" "FrameClock")
 -- throws : False
 -- Skip return : False
 
@@ -2818,7 +2832,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rect", argType = TInterface "Gdk" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -2848,7 +2862,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "FullscreenMode"
+-- returnType : Just (TInterface "Gdk" "FullscreenMode")
 -- throws : False
 -- Skip return : False
 
@@ -2874,18 +2888,18 @@
 
 -- method Window::get_geometry
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_get_geometry" gdk_window_get_geometry :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Ptr Int32 ->                            -- x : TBasicType TInt32
-    Ptr Int32 ->                            -- y : TBasicType TInt32
-    Ptr Int32 ->                            -- width : TBasicType TInt32
-    Ptr Int32 ->                            -- height : TBasicType TInt32
+    Ptr Int32 ->                            -- x : TBasicType TInt
+    Ptr Int32 ->                            -- y : TBasicType TInt
+    Ptr Int32 ->                            -- width : TBasicType TInt
+    Ptr Int32 ->                            -- height : TBasicType TInt
     IO ()
 
 
@@ -2919,7 +2933,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -2948,7 +2962,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -2975,7 +2989,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -3001,16 +3015,16 @@
 
 -- method Window::get_origin
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_get_origin" gdk_window_get_origin :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Ptr Int32 ->                            -- x : TBasicType TInt32
-    Ptr Int32 ->                            -- y : TBasicType TInt32
+    Ptr Int32 ->                            -- x : TBasicType TInt
+    Ptr Int32 ->                            -- y : TBasicType TInt
     IO Int32
 
 
@@ -3038,7 +3052,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -3067,7 +3081,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -3093,16 +3107,16 @@
 
 -- method Window::get_pointer
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_get_pointer" gdk_window_get_pointer :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Ptr Int32 ->                            -- x : TBasicType TInt32
-    Ptr Int32 ->                            -- y : TBasicType TInt32
+    Ptr Int32 ->                            -- x : TBasicType TInt
+    Ptr Int32 ->                            -- y : TBasicType TInt
     Ptr CUInt ->                            -- mask : TInterface "Gdk" "ModifierType"
     IO (Ptr Window)
 
@@ -3110,15 +3124,16 @@
 windowGetPointer ::
     (MonadIO m, WindowK a) =>
     a                                       -- _obj
-    -> m (Window,Int32,Int32,[ModifierType])-- result
+    -> m ((Maybe Window),Int32,Int32,[ModifierType])-- result
 windowGetPointer _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     x <- allocMem :: IO (Ptr Int32)
     y <- allocMem :: IO (Ptr Int32)
     mask <- allocMem :: IO (Ptr CUInt)
     result <- gdk_window_get_pointer _obj' x y mask
-    checkUnexpectedReturnNULL "gdk_window_get_pointer" result
-    result' <- (newObject Window) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Window) result'
+        return result''
     x' <- peek x
     y' <- peek y
     mask' <- peek mask
@@ -3127,24 +3142,24 @@
     freeMem x
     freeMem y
     freeMem mask
-    return (result', x', y', mask'')
+    return (maybeResult, x', y', mask'')
 
 data WindowGetPointerMethodInfo
-instance (signature ~ (m (Window,Int32,Int32,[ModifierType])), MonadIO m, WindowK a) => MethodInfo WindowGetPointerMethodInfo a signature where
+instance (signature ~ (m ((Maybe Window),Int32,Int32,[ModifierType])), MonadIO m, WindowK a) => MethodInfo WindowGetPointerMethodInfo a signature where
     overloadedMethod _ = windowGetPointer
 
 -- method Window::get_position
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_get_position" gdk_window_get_position :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Ptr Int32 ->                            -- x : TBasicType TInt32
-    Ptr Int32 ->                            -- y : TBasicType TInt32
+    Ptr Int32 ->                            -- x : TBasicType TInt
+    Ptr Int32 ->                            -- y : TBasicType TInt
     IO ()
 
 
@@ -3170,18 +3185,18 @@
 
 -- method Window::get_root_coords
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "root_y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "root_x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "root_y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_get_root_coords" gdk_window_get_root_coords :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
-    Ptr Int32 ->                            -- root_x : TBasicType TInt32
-    Ptr Int32 ->                            -- root_y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
+    Ptr Int32 ->                            -- root_x : TBasicType TInt
+    Ptr Int32 ->                            -- root_y : TBasicType TInt
     IO ()
 
 
@@ -3209,16 +3224,16 @@
 
 -- method Window::get_root_origin
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_get_root_origin" gdk_window_get_root_origin :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Ptr Int32 ->                            -- x : TBasicType TInt32
-    Ptr Int32 ->                            -- y : TBasicType TInt32
+    Ptr Int32 ->                            -- x : TBasicType TInt
+    Ptr Int32 ->                            -- y : TBasicType TInt
     IO ()
 
 
@@ -3246,7 +3261,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -3273,7 +3288,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Screen"
+-- returnType : Just (TInterface "Gdk" "Screen")
 -- throws : False
 -- Skip return : False
 
@@ -3302,7 +3317,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "source", argType = TInterface "Gdk" "InputSource", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "EventMask"
+-- returnType : Just (TInterface "Gdk" "EventMask")
 -- throws : False
 -- Skip return : False
 
@@ -3333,7 +3348,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "WindowState"
+-- returnType : Just (TInterface "Gdk" "WindowState")
 -- throws : False
 -- Skip return : False
 
@@ -3361,7 +3376,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -3389,7 +3404,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -3418,7 +3433,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "WindowTypeHint"
+-- returnType : Just (TInterface "Gdk" "WindowTypeHint")
 -- throws : False
 -- Skip return : False
 
@@ -3446,7 +3461,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Region"
+-- returnType : Just (TInterface "cairo" "Region")
 -- throws : False
 -- Skip return : False
 
@@ -3473,15 +3488,15 @@
 
 -- method Window::get_user_data
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_get_user_data" gdk_window_get_user_data :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Ptr (Ptr ()) ->                         -- data : TBasicType TVoid
+    Ptr (Ptr ()) ->                         -- data : TBasicType TPtr
     IO ()
 
 
@@ -3506,7 +3521,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "cairo" "Region"
+-- returnType : Just (TInterface "cairo" "Region")
 -- throws : False
 -- Skip return : False
 
@@ -3535,7 +3550,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Visual"
+-- returnType : Just (TInterface "Gdk" "Visual")
 -- throws : False
 -- Skip return : False
 
@@ -3564,7 +3579,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -3591,7 +3606,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "WindowType"
+-- returnType : Just (TInterface "Gdk" "WindowType")
 -- throws : False
 -- Skip return : False
 
@@ -3619,7 +3634,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -3647,7 +3662,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -3674,7 +3689,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -3699,17 +3714,17 @@
 
 -- method Window::input_shape_combine_region
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "shape_region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "shape_region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset_x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset_y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_input_shape_combine_region" gdk_window_input_shape_combine_region :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
     Ptr Cairo.Region ->                     -- shape_region : TInterface "cairo" "Region"
-    Int32 ->                                -- offset_x : TBasicType TInt32
-    Int32 ->                                -- offset_y : TBasicType TInt32
+    Int32 ->                                -- offset_x : TBasicType TInt
+    Int32 ->                                -- offset_y : TBasicType TInt
     IO ()
 
 
@@ -3734,9 +3749,9 @@
 
 -- method Window::invalidate_maybe_recurse
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "child_func", argType = TInterface "Gdk" "WindowChildFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "child_func", argType = TInterface "Gdk" "WindowChildFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -3744,7 +3759,7 @@
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
     Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
     FunPtr WindowChildFuncC ->              -- child_func : TInterface "Gdk" "WindowChildFunc"
-    Ptr () ->                               -- user_data : TBasicType TVoid
+    Ptr () ->                               -- user_data : TBasicType TPtr
     IO ()
 
 
@@ -3777,7 +3792,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rect", argType = TInterface "Gdk" "Rectangle", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "invalidate_children", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -3815,7 +3830,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "invalidate_children", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -3849,7 +3864,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -3877,7 +3892,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -3905,7 +3920,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -3933,7 +3948,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -3961,7 +3976,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -3989,7 +4004,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4016,7 +4031,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4047,7 +4062,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4074,7 +4089,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4101,7 +4116,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4126,16 +4141,16 @@
 
 -- method Window::move
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_move" gdk_window_move :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
     IO ()
 
 
@@ -4157,17 +4172,17 @@
 
 -- method Window::move_region
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dx", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dy", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dx", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dy", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_move_region" gdk_window_move_region :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
     Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
-    Int32 ->                                -- dx : TBasicType TInt32
-    Int32 ->                                -- dy : TBasicType TInt32
+    Int32 ->                                -- dx : TBasicType TInt
+    Int32 ->                                -- dy : TBasicType TInt
     IO ()
 
 
@@ -4192,18 +4207,18 @@
 
 -- method Window::move_resize
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_move_resize" gdk_window_move_resize :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
-    Int32 ->                                -- width : TBasicType TInt32
-    Int32 ->                                -- height : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
+    Int32 ->                                -- width : TBasicType TInt
+    Int32 ->                                -- height : TBasicType TInt
     IO ()
 
 
@@ -4229,7 +4244,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Gdk" "Window")
+-- returnType : Just (TGList (TInterface "Gdk" "Window"))
 -- throws : False
 -- Skip return : False
 
@@ -4245,7 +4260,6 @@
 windowPeekChildren _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- gdk_window_peek_children _obj'
-    checkUnexpectedReturnNULL "gdk_window_peek_children" result
     result' <- unpackGList result
     result'' <- mapM (newObject Window) result'
     touchManagedPtr _obj
@@ -4259,7 +4273,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "update_children", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4289,7 +4303,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4316,7 +4330,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4341,17 +4355,17 @@
 
 -- method Window::reparent
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_parent", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_parent", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_reparent" gdk_window_reparent :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
     Ptr Window ->                           -- new_parent : TInterface "Gdk" "Window"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
     IO ()
 
 
@@ -4376,16 +4390,16 @@
 
 -- method Window::resize
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_resize" gdk_window_resize :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Int32 ->                                -- width : TBasicType TInt32
-    Int32 ->                                -- height : TBasicType TInt32
+    Int32 ->                                -- width : TBasicType TInt
+    Int32 ->                                -- height : TBasicType TInt
     IO ()
 
 
@@ -4409,7 +4423,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "sibling", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "above", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4445,16 +4459,16 @@
 
 -- method Window::scroll
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dx", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dy", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dx", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dy", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_scroll" gdk_window_scroll :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Int32 ->                                -- dx : TBasicType TInt32
-    Int32 ->                                -- dy : TBasicType TInt32
+    Int32 ->                                -- dx : TBasicType TInt
+    Int32 ->                                -- dy : TBasicType TInt
     IO ()
 
 
@@ -4478,7 +4492,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accept_focus", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4508,7 +4522,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4539,7 +4553,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pattern", argType = TInterface "cairo" "Pattern", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4574,7 +4588,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rgba", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4605,7 +4619,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4632,7 +4646,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4659,7 +4673,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "composited", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4689,7 +4703,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4724,7 +4738,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "decorations", argType = TInterface "Gdk" "WMDecoration", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4754,7 +4768,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4789,7 +4803,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4823,7 +4837,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event_compression", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4853,7 +4867,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4883,7 +4897,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "focus_on_map", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4913,7 +4927,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mode", argType = TInterface "Gdk" "FullscreenMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4943,7 +4957,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "functions", argType = TInterface "Gdk" "WMFunction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -4973,7 +4987,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "geometry", argType = TInterface "Gdk" "Geometry", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "geom_mask", argType = TInterface "Gdk" "WindowHints", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5007,7 +5021,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "leader", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5042,7 +5056,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbufs", argType = TGList (TInterface "GdkPixbuf" "Pixbuf"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5075,7 +5089,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5110,7 +5124,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5140,7 +5154,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5170,7 +5184,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modal", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5200,7 +5214,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "opacity", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5230,7 +5244,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5265,7 +5279,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "override_redirect", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5295,7 +5309,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pass_through", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5325,7 +5339,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "role", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5354,18 +5368,18 @@
 
 -- method Window::set_shadow_width
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "left", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "right", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "top", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bottom", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "left", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "right", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "top", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bottom", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_set_shadow_width" gdk_window_set_shadow_width :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
-    Int32 ->                                -- left : TBasicType TInt32
-    Int32 ->                                -- right : TBasicType TInt32
-    Int32 ->                                -- top : TBasicType TInt32
-    Int32 ->                                -- bottom : TBasicType TInt32
+    Int32 ->                                -- left : TBasicType TInt
+    Int32 ->                                -- right : TBasicType TInt
+    Int32 ->                                -- top : TBasicType TInt
+    Int32 ->                                -- bottom : TBasicType TInt
     IO ()
 
 
@@ -5391,7 +5405,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "skips_pager", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5421,7 +5435,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "skips_taskbar", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5451,7 +5465,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "source", argType = TInterface "Gdk" "InputSource", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5484,7 +5498,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5515,7 +5529,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "use_static", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -5546,7 +5560,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "support_multidevice", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5576,7 +5590,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5607,7 +5621,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "parent", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5638,7 +5652,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "hint", argType = TInterface "Gdk" "WindowTypeHint", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5668,7 +5682,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "urgent", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5698,7 +5712,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5731,17 +5745,17 @@
 
 -- method Window::shape_combine_region
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "shape_region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "shape_region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset_x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset_y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_shape_combine_region" gdk_window_shape_combine_region :: 
     Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
     Ptr Cairo.Region ->                     -- shape_region : TInterface "cairo" "Region"
-    Int32 ->                                -- offset_x : TBasicType TInt32
-    Int32 ->                                -- offset_y : TBasicType TInt32
+    Int32 ->                                -- offset_x : TBasicType TInt
+    Int32 ->                                -- offset_y : TBasicType TInt
     IO ()
 
 
@@ -5772,7 +5786,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5799,7 +5813,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5826,7 +5840,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -5858,7 +5872,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5885,7 +5899,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5912,7 +5926,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5939,7 +5953,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5966,7 +5980,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -5993,7 +6007,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -6020,7 +6034,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -6045,15 +6059,15 @@
 
 -- method Window::at_pointer
 -- method type : MemberFunction
--- Args : [Arg {argCName = "win_x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "win_y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "win_x", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "win_y", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_at_pointer" gdk_window_at_pointer :: 
-    Ptr Int32 ->                            -- win_x : TBasicType TInt32
-    Ptr Int32 ->                            -- win_y : TBasicType TInt32
+    Ptr Int32 ->                            -- win_x : TBasicType TInt
+    Ptr Int32 ->                            -- win_y : TBasicType TInt
     IO (Ptr Window)
 
 {-# DEPRECATED windowAtPointer ["(Since version 3.0)","Use gdk_device_get_window_at_position() instead."]#-}
@@ -6074,19 +6088,19 @@
 
 -- method Window::constrain_size
 -- method type : MemberFunction
--- Args : [Arg {argCName = "geometry", argType = TInterface "Gdk" "Geometry", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "Gdk" "WindowHints", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "new_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "geometry", argType = TInterface "Gdk" "Geometry", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "Gdk" "WindowHints", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_width", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "new_height", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_window_constrain_size" gdk_window_constrain_size :: 
     Ptr Geometry ->                         -- geometry : TInterface "Gdk" "Geometry"
     CUInt ->                                -- flags : TInterface "Gdk" "WindowHints"
-    Int32 ->                                -- width : TBasicType TInt32
-    Int32 ->                                -- height : TBasicType TInt32
-    Ptr Int32 ->                            -- new_width : TBasicType TInt32
-    Ptr Int32 ->                            -- new_height : TBasicType TInt32
+    Int32 ->                                -- width : TBasicType TInt
+    Int32 ->                                -- height : TBasicType TInt
+    Ptr Int32 ->                            -- new_width : TBasicType TInt
+    Ptr Int32 ->                            -- new_height : TBasicType TInt
     IO ()
 
 
@@ -6114,7 +6128,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -6133,7 +6147,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Objects/Window.hs-boot b/GI/Gdk/Objects/Window.hs-boot
--- a/GI/Gdk/Objects/Window.hs-boot
+++ b/GI/Gdk/Objects/Window.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Objects.Window where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs.hs b/GI/Gdk/Structs.hs
--- a/GI/Gdk/Structs.hs
+++ b/GI/Gdk/Structs.hs
@@ -78,9 +78,9 @@
 import GI.Gdk.Structs.WindowAttr
 import GI.Gdk.Structs.WindowRedirect
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/Atom.hs b/GI/Gdk/Structs/Atom.hs
--- a/GI/Gdk/Structs/Atom.hs
+++ b/GI/Gdk/Structs/Atom.hs
@@ -35,9 +35,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -49,11 +49,15 @@
 noAtom :: Maybe Atom
 noAtom = Nothing
 
+
+type instance AttributeList Atom = AtomAttributeList
+type AtomAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method Atom::name
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -83,7 +87,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "atom_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "only_if_exists", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Atom"
+-- returnType : Just (TInterface "Gdk" "Atom")
 -- throws : False
 -- Skip return : False
 
@@ -112,7 +116,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "atom_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Atom"
+-- returnType : Just (TInterface "Gdk" "Atom")
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Structs/Atom.hs-boot b/GI/Gdk/Structs/Atom.hs-boot
--- a/GI/Gdk/Structs/Atom.hs-boot
+++ b/GI/Gdk/Structs/Atom.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.Atom where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/Color.hs b/GI/Gdk/Structs/Color.hs
--- a/GI/Gdk/Structs/Color.hs
+++ b/GI/Gdk/Structs/Color.hs
@@ -52,28 +52,36 @@
 
  -- * Properties
 -- ** Blue
+    colorBlue                               ,
     colorReadBlue                           ,
+    colorWriteBlue                          ,
 
 
 -- ** Green
+    colorGreen                              ,
     colorReadGreen                          ,
+    colorWriteGreen                         ,
 
 
 -- ** Pixel
+    colorPixel                              ,
     colorReadPixel                          ,
+    colorWritePixel                         ,
 
 
 -- ** Red
     colorReadRed                            ,
+    colorRed                                ,
+    colorWriteRed                           ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -92,34 +100,125 @@
 newZeroColor :: MonadIO m => m Color
 newZeroColor = liftIO $ callocBoxedBytes 12 >>= wrapBoxed Color
 
+instance tag ~ 'AttrSet => Constructible Color tag where
+    new _ attrs = do
+        o <- newZeroColor
+        GI.Attributes.set o attrs
+        return o
+
+
 noColor :: Maybe Color
 noColor = Nothing
 
-colorReadPixel :: Color -> IO Word32
-colorReadPixel s = withManagedPtr s $ \ptr -> do
+colorReadPixel :: MonadIO m => Color -> m Word32
+colorReadPixel s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word32
     return val
 
-colorReadRed :: Color -> IO Word16
-colorReadRed s = withManagedPtr s $ \ptr -> do
+colorWritePixel :: MonadIO m => Color -> Word32 -> m ()
+colorWritePixel s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word32)
+
+data ColorPixelFieldInfo
+instance AttrInfo ColorPixelFieldInfo where
+    type AttrAllowedOps ColorPixelFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ColorPixelFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint ColorPixelFieldInfo = (~) Color
+    type AttrGetType ColorPixelFieldInfo = Word32
+    type AttrLabel ColorPixelFieldInfo = "pixel"
+    attrGet _ = colorReadPixel
+    attrSet _ = colorWritePixel
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+colorPixel :: AttrLabelProxy "pixel"
+colorPixel = AttrLabelProxy
+
+
+colorReadRed :: MonadIO m => Color -> m Word16
+colorReadRed s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO Word16
     return val
 
-colorReadGreen :: Color -> IO Word16
-colorReadGreen s = withManagedPtr s $ \ptr -> do
+colorWriteRed :: MonadIO m => Color -> Word16 -> m ()
+colorWriteRed s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (val :: Word16)
+
+data ColorRedFieldInfo
+instance AttrInfo ColorRedFieldInfo where
+    type AttrAllowedOps ColorRedFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ColorRedFieldInfo = (~) Word16
+    type AttrBaseTypeConstraint ColorRedFieldInfo = (~) Color
+    type AttrGetType ColorRedFieldInfo = Word16
+    type AttrLabel ColorRedFieldInfo = "red"
+    attrGet _ = colorReadRed
+    attrSet _ = colorWriteRed
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+colorRed :: AttrLabelProxy "red"
+colorRed = AttrLabelProxy
+
+
+colorReadGreen :: MonadIO m => Color -> m Word16
+colorReadGreen s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 6) :: IO Word16
     return val
 
-colorReadBlue :: Color -> IO Word16
-colorReadBlue s = withManagedPtr s $ \ptr -> do
+colorWriteGreen :: MonadIO m => Color -> Word16 -> m ()
+colorWriteGreen s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 6) (val :: Word16)
+
+data ColorGreenFieldInfo
+instance AttrInfo ColorGreenFieldInfo where
+    type AttrAllowedOps ColorGreenFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ColorGreenFieldInfo = (~) Word16
+    type AttrBaseTypeConstraint ColorGreenFieldInfo = (~) Color
+    type AttrGetType ColorGreenFieldInfo = Word16
+    type AttrLabel ColorGreenFieldInfo = "green"
+    attrGet _ = colorReadGreen
+    attrSet _ = colorWriteGreen
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+colorGreen :: AttrLabelProxy "green"
+colorGreen = AttrLabelProxy
+
+
+colorReadBlue :: MonadIO m => Color -> m Word16
+colorReadBlue s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Word16
     return val
 
+colorWriteBlue :: MonadIO m => Color -> Word16 -> m ()
+colorWriteBlue s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Word16)
+
+data ColorBlueFieldInfo
+instance AttrInfo ColorBlueFieldInfo where
+    type AttrAllowedOps ColorBlueFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ColorBlueFieldInfo = (~) Word16
+    type AttrBaseTypeConstraint ColorBlueFieldInfo = (~) Color
+    type AttrGetType ColorBlueFieldInfo = Word16
+    type AttrLabel ColorBlueFieldInfo = "blue"
+    attrGet _ = colorReadBlue
+    attrSet _ = colorWriteBlue
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+colorBlue :: AttrLabelProxy "blue"
+colorBlue = AttrLabelProxy
+
+
+
+type instance AttributeList Color = ColorAttributeList
+type ColorAttributeList = ('[ '("pixel", ColorPixelFieldInfo), '("red", ColorRedFieldInfo), '("green", ColorGreenFieldInfo), '("blue", ColorBlueFieldInfo)] :: [(Symbol, *)])
+
 -- method Color::copy
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Color"
+-- returnType : Just (TInterface "Gdk" "Color")
 -- throws : False
 -- Skip return : False
 
@@ -148,7 +247,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "colorb", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -180,7 +279,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -207,7 +306,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
@@ -234,7 +333,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -264,7 +363,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "spec", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "color", argType = TInterface "Gdk" "Color", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Structs/Color.hs-boot b/GI/Gdk/Structs/Color.hs-boot
--- a/GI/Gdk/Structs/Color.hs-boot
+++ b/GI/Gdk/Structs/Color.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.Color where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventAny.hs b/GI/Gdk/Structs/EventAny.hs
--- a/GI/Gdk/Structs/EventAny.hs
+++ b/GI/Gdk/Structs/EventAny.hs
@@ -22,23 +22,30 @@
  -- * Properties
 -- ** SendEvent
     eventAnyReadSendEvent                   ,
+    eventAnySendEvent                       ,
+    eventAnyWriteSendEvent                  ,
 
 
 -- ** Type
     eventAnyReadType                        ,
+    eventAnyType                            ,
+    eventAnyWriteType                       ,
 
 
 -- ** Window
+    eventAnyClearWindow                     ,
     eventAnyReadWindow                      ,
+    eventAnyWindow                          ,
+    eventAnyWriteWindow                     ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -51,25 +58,103 @@
 newZeroEventAny :: MonadIO m => m EventAny
 newZeroEventAny = liftIO $ callocBytes 24 >>= wrapPtr EventAny
 
+instance tag ~ 'AttrSet => Constructible EventAny tag where
+    new _ attrs = do
+        o <- newZeroEventAny
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventAny :: Maybe EventAny
 noEventAny = Nothing
 
-eventAnyReadType :: EventAny -> IO EventType
-eventAnyReadType s = withManagedPtr s $ \ptr -> do
+eventAnyReadType :: MonadIO m => EventAny -> m EventType
+eventAnyReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventAnyReadWindow :: EventAny -> IO Window
-eventAnyReadWindow s = withManagedPtr s $ \ptr -> do
+eventAnyWriteType :: MonadIO m => EventAny -> EventType -> m ()
+eventAnyWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventAnyTypeFieldInfo
+instance AttrInfo EventAnyTypeFieldInfo where
+    type AttrAllowedOps EventAnyTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventAnyTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventAnyTypeFieldInfo = (~) EventAny
+    type AttrGetType EventAnyTypeFieldInfo = EventType
+    type AttrLabel EventAnyTypeFieldInfo = "type"
+    attrGet _ = eventAnyReadType
+    attrSet _ = eventAnyWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventAnyType :: AttrLabelProxy "type"
+eventAnyType = AttrLabelProxy
+
+
+eventAnyReadWindow :: MonadIO m => EventAny -> m (Maybe Window)
+eventAnyReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventAnyReadSendEvent :: EventAny -> IO Int8
-eventAnyReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventAnyWriteWindow :: MonadIO m => EventAny -> Ptr Window -> m ()
+eventAnyWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventAnyClearWindow :: MonadIO m => EventAny -> m ()
+eventAnyClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventAnyWindowFieldInfo
+instance AttrInfo EventAnyWindowFieldInfo where
+    type AttrAllowedOps EventAnyWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventAnyWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventAnyWindowFieldInfo = (~) EventAny
+    type AttrGetType EventAnyWindowFieldInfo = Maybe Window
+    type AttrLabel EventAnyWindowFieldInfo = "window"
+    attrGet _ = eventAnyReadWindow
+    attrSet _ = eventAnyWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventAnyClearWindow
+
+eventAnyWindow :: AttrLabelProxy "window"
+eventAnyWindow = AttrLabelProxy
+
+
+eventAnyReadSendEvent :: MonadIO m => EventAny -> m Int8
+eventAnyReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
+
+eventAnyWriteSendEvent :: MonadIO m => EventAny -> Int8 -> m ()
+eventAnyWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventAnySendEventFieldInfo
+instance AttrInfo EventAnySendEventFieldInfo where
+    type AttrAllowedOps EventAnySendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventAnySendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventAnySendEventFieldInfo = (~) EventAny
+    type AttrGetType EventAnySendEventFieldInfo = Int8
+    type AttrLabel EventAnySendEventFieldInfo = "send_event"
+    attrGet _ = eventAnyReadSendEvent
+    attrSet _ = eventAnyWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventAnySendEvent :: AttrLabelProxy "sendEvent"
+eventAnySendEvent = AttrLabelProxy
+
+
+
+type instance AttributeList EventAny = EventAnyAttributeList
+type EventAnyAttributeList = ('[ '("type", EventAnyTypeFieldInfo), '("window", EventAnyWindowFieldInfo), '("sendEvent", EventAnySendEventFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventAnyMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventAnyMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventAny.hs-boot b/GI/Gdk/Structs/EventAny.hs-boot
--- a/GI/Gdk/Structs/EventAny.hs-boot
+++ b/GI/Gdk/Structs/EventAny.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventAny where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventButton.hs b/GI/Gdk/Structs/EventButton.hs
--- a/GI/Gdk/Structs/EventButton.hs
+++ b/GI/Gdk/Structs/EventButton.hs
@@ -51,60 +51,86 @@
 
  -- * Properties
 -- ** Axes
+    eventButtonAxes                         ,
     eventButtonReadAxes                     ,
+    eventButtonWriteAxes                    ,
 
 
 -- ** Button
+    eventButtonButton                       ,
     eventButtonReadButton                   ,
+    eventButtonWriteButton                  ,
 
 
 -- ** Device
+    eventButtonClearDevice                  ,
+    eventButtonDevice                       ,
     eventButtonReadDevice                   ,
+    eventButtonWriteDevice                  ,
 
 
 -- ** SendEvent
     eventButtonReadSendEvent                ,
+    eventButtonSendEvent                    ,
+    eventButtonWriteSendEvent               ,
 
 
 -- ** State
     eventButtonReadState                    ,
+    eventButtonState                        ,
+    eventButtonWriteState                   ,
 
 
 -- ** Time
     eventButtonReadTime                     ,
+    eventButtonTime                         ,
+    eventButtonWriteTime                    ,
 
 
 -- ** Type
     eventButtonReadType                     ,
+    eventButtonType                         ,
+    eventButtonWriteType                    ,
 
 
 -- ** Window
+    eventButtonClearWindow                  ,
     eventButtonReadWindow                   ,
+    eventButtonWindow                       ,
+    eventButtonWriteWindow                  ,
 
 
 -- ** X
     eventButtonReadX                        ,
+    eventButtonWriteX                       ,
+    eventButtonX                            ,
 
 
 -- ** XRoot
     eventButtonReadXRoot                    ,
+    eventButtonWriteXRoot                   ,
+    eventButtonXRoot                        ,
 
 
 -- ** Y
     eventButtonReadY                        ,
+    eventButtonWriteY                       ,
+    eventButtonY                            ,
 
 
 -- ** YRoot
     eventButtonReadYRoot                    ,
+    eventButtonWriteYRoot                   ,
+    eventButtonYRoot                        ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -117,77 +143,347 @@
 newZeroEventButton :: MonadIO m => m EventButton
 newZeroEventButton = liftIO $ callocBytes 80 >>= wrapPtr EventButton
 
+instance tag ~ 'AttrSet => Constructible EventButton tag where
+    new _ attrs = do
+        o <- newZeroEventButton
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventButton :: Maybe EventButton
 noEventButton = Nothing
 
-eventButtonReadType :: EventButton -> IO EventType
-eventButtonReadType s = withManagedPtr s $ \ptr -> do
+eventButtonReadType :: MonadIO m => EventButton -> m EventType
+eventButtonReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventButtonReadWindow :: EventButton -> IO Window
-eventButtonReadWindow s = withManagedPtr s $ \ptr -> do
+eventButtonWriteType :: MonadIO m => EventButton -> EventType -> m ()
+eventButtonWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventButtonTypeFieldInfo
+instance AttrInfo EventButtonTypeFieldInfo where
+    type AttrAllowedOps EventButtonTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventButtonTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventButtonTypeFieldInfo = (~) EventButton
+    type AttrGetType EventButtonTypeFieldInfo = EventType
+    type AttrLabel EventButtonTypeFieldInfo = "type"
+    attrGet _ = eventButtonReadType
+    attrSet _ = eventButtonWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventButtonType :: AttrLabelProxy "type"
+eventButtonType = AttrLabelProxy
+
+
+eventButtonReadWindow :: MonadIO m => EventButton -> m (Maybe Window)
+eventButtonReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventButtonReadSendEvent :: EventButton -> IO Int8
-eventButtonReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventButtonWriteWindow :: MonadIO m => EventButton -> Ptr Window -> m ()
+eventButtonWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventButtonClearWindow :: MonadIO m => EventButton -> m ()
+eventButtonClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventButtonWindowFieldInfo
+instance AttrInfo EventButtonWindowFieldInfo where
+    type AttrAllowedOps EventButtonWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventButtonWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventButtonWindowFieldInfo = (~) EventButton
+    type AttrGetType EventButtonWindowFieldInfo = Maybe Window
+    type AttrLabel EventButtonWindowFieldInfo = "window"
+    attrGet _ = eventButtonReadWindow
+    attrSet _ = eventButtonWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventButtonClearWindow
+
+eventButtonWindow :: AttrLabelProxy "window"
+eventButtonWindow = AttrLabelProxy
+
+
+eventButtonReadSendEvent :: MonadIO m => EventButton -> m Int8
+eventButtonReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventButtonReadTime :: EventButton -> IO Word32
-eventButtonReadTime s = withManagedPtr s $ \ptr -> do
+eventButtonWriteSendEvent :: MonadIO m => EventButton -> Int8 -> m ()
+eventButtonWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventButtonSendEventFieldInfo
+instance AttrInfo EventButtonSendEventFieldInfo where
+    type AttrAllowedOps EventButtonSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventButtonSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventButtonSendEventFieldInfo = (~) EventButton
+    type AttrGetType EventButtonSendEventFieldInfo = Int8
+    type AttrLabel EventButtonSendEventFieldInfo = "send_event"
+    attrGet _ = eventButtonReadSendEvent
+    attrSet _ = eventButtonWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventButtonSendEvent :: AttrLabelProxy "sendEvent"
+eventButtonSendEvent = AttrLabelProxy
+
+
+eventButtonReadTime :: MonadIO m => EventButton -> m Word32
+eventButtonReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Word32
     return val
 
-eventButtonReadX :: EventButton -> IO Double
-eventButtonReadX s = withManagedPtr s $ \ptr -> do
+eventButtonWriteTime :: MonadIO m => EventButton -> Word32 -> m ()
+eventButtonWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Word32)
+
+data EventButtonTimeFieldInfo
+instance AttrInfo EventButtonTimeFieldInfo where
+    type AttrAllowedOps EventButtonTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventButtonTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventButtonTimeFieldInfo = (~) EventButton
+    type AttrGetType EventButtonTimeFieldInfo = Word32
+    type AttrLabel EventButtonTimeFieldInfo = "time"
+    attrGet _ = eventButtonReadTime
+    attrSet _ = eventButtonWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventButtonTime :: AttrLabelProxy "time"
+eventButtonTime = AttrLabelProxy
+
+
+eventButtonReadX :: MonadIO m => EventButton -> m Double
+eventButtonReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventButtonReadY :: EventButton -> IO Double
-eventButtonReadY s = withManagedPtr s $ \ptr -> do
+eventButtonWriteX :: MonadIO m => EventButton -> Double -> m ()
+eventButtonWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 24) (val' :: CDouble)
+
+data EventButtonXFieldInfo
+instance AttrInfo EventButtonXFieldInfo where
+    type AttrAllowedOps EventButtonXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventButtonXFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventButtonXFieldInfo = (~) EventButton
+    type AttrGetType EventButtonXFieldInfo = Double
+    type AttrLabel EventButtonXFieldInfo = "x"
+    attrGet _ = eventButtonReadX
+    attrSet _ = eventButtonWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventButtonX :: AttrLabelProxy "x"
+eventButtonX = AttrLabelProxy
+
+
+eventButtonReadY :: MonadIO m => EventButton -> m Double
+eventButtonReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventButtonReadAxes :: EventButton -> IO Double
-eventButtonReadAxes s = withManagedPtr s $ \ptr -> do
+eventButtonWriteY :: MonadIO m => EventButton -> Double -> m ()
+eventButtonWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 32) (val' :: CDouble)
+
+data EventButtonYFieldInfo
+instance AttrInfo EventButtonYFieldInfo where
+    type AttrAllowedOps EventButtonYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventButtonYFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventButtonYFieldInfo = (~) EventButton
+    type AttrGetType EventButtonYFieldInfo = Double
+    type AttrLabel EventButtonYFieldInfo = "y"
+    attrGet _ = eventButtonReadY
+    attrSet _ = eventButtonWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventButtonY :: AttrLabelProxy "y"
+eventButtonY = AttrLabelProxy
+
+
+eventButtonReadAxes :: MonadIO m => EventButton -> m Double
+eventButtonReadAxes s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventButtonReadState :: EventButton -> IO [ModifierType]
-eventButtonReadState s = withManagedPtr s $ \ptr -> do
+eventButtonWriteAxes :: MonadIO m => EventButton -> Double -> m ()
+eventButtonWriteAxes s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 40) (val' :: CDouble)
+
+data EventButtonAxesFieldInfo
+instance AttrInfo EventButtonAxesFieldInfo where
+    type AttrAllowedOps EventButtonAxesFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventButtonAxesFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventButtonAxesFieldInfo = (~) EventButton
+    type AttrGetType EventButtonAxesFieldInfo = Double
+    type AttrLabel EventButtonAxesFieldInfo = "axes"
+    attrGet _ = eventButtonReadAxes
+    attrSet _ = eventButtonWriteAxes
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventButtonAxes :: AttrLabelProxy "axes"
+eventButtonAxes = AttrLabelProxy
+
+
+eventButtonReadState :: MonadIO m => EventButton -> m [ModifierType]
+eventButtonReadState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO CUInt
     let val' = wordToGFlags val
     return val'
 
-eventButtonReadButton :: EventButton -> IO Word32
-eventButtonReadButton s = withManagedPtr s $ \ptr -> do
+eventButtonWriteState :: MonadIO m => EventButton -> [ModifierType] -> m ()
+eventButtonWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = gflagsToWord val
+    poke (ptr `plusPtr` 48) (val' :: CUInt)
+
+data EventButtonStateFieldInfo
+instance AttrInfo EventButtonStateFieldInfo where
+    type AttrAllowedOps EventButtonStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventButtonStateFieldInfo = (~) [ModifierType]
+    type AttrBaseTypeConstraint EventButtonStateFieldInfo = (~) EventButton
+    type AttrGetType EventButtonStateFieldInfo = [ModifierType]
+    type AttrLabel EventButtonStateFieldInfo = "state"
+    attrGet _ = eventButtonReadState
+    attrSet _ = eventButtonWriteState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventButtonState :: AttrLabelProxy "state"
+eventButtonState = AttrLabelProxy
+
+
+eventButtonReadButton :: MonadIO m => EventButton -> m Word32
+eventButtonReadButton s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 52) :: IO Word32
     return val
 
-eventButtonReadDevice :: EventButton -> IO Device
-eventButtonReadDevice s = withManagedPtr s $ \ptr -> do
+eventButtonWriteButton :: MonadIO m => EventButton -> Word32 -> m ()
+eventButtonWriteButton s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 52) (val :: Word32)
+
+data EventButtonButtonFieldInfo
+instance AttrInfo EventButtonButtonFieldInfo where
+    type AttrAllowedOps EventButtonButtonFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventButtonButtonFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventButtonButtonFieldInfo = (~) EventButton
+    type AttrGetType EventButtonButtonFieldInfo = Word32
+    type AttrLabel EventButtonButtonFieldInfo = "button"
+    attrGet _ = eventButtonReadButton
+    attrSet _ = eventButtonWriteButton
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventButtonButton :: AttrLabelProxy "button"
+eventButtonButton = AttrLabelProxy
+
+
+eventButtonReadDevice :: MonadIO m => EventButton -> m (Maybe Device)
+eventButtonReadDevice s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 56) :: IO (Ptr Device)
-    val' <- (newObject Device) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Device) val'
+        return val''
+    return result
 
-eventButtonReadXRoot :: EventButton -> IO Double
-eventButtonReadXRoot s = withManagedPtr s $ \ptr -> do
+eventButtonWriteDevice :: MonadIO m => EventButton -> Ptr Device -> m ()
+eventButtonWriteDevice s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 56) (val :: Ptr Device)
+
+eventButtonClearDevice :: MonadIO m => EventButton -> m ()
+eventButtonClearDevice s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 56) (nullPtr :: Ptr Device)
+
+data EventButtonDeviceFieldInfo
+instance AttrInfo EventButtonDeviceFieldInfo where
+    type AttrAllowedOps EventButtonDeviceFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventButtonDeviceFieldInfo = (~) (Ptr Device)
+    type AttrBaseTypeConstraint EventButtonDeviceFieldInfo = (~) EventButton
+    type AttrGetType EventButtonDeviceFieldInfo = Maybe Device
+    type AttrLabel EventButtonDeviceFieldInfo = "device"
+    attrGet _ = eventButtonReadDevice
+    attrSet _ = eventButtonWriteDevice
+    attrConstruct = undefined
+    attrClear _ = eventButtonClearDevice
+
+eventButtonDevice :: AttrLabelProxy "device"
+eventButtonDevice = AttrLabelProxy
+
+
+eventButtonReadXRoot :: MonadIO m => EventButton -> m Double
+eventButtonReadXRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 64) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventButtonReadYRoot :: EventButton -> IO Double
-eventButtonReadYRoot s = withManagedPtr s $ \ptr -> do
+eventButtonWriteXRoot :: MonadIO m => EventButton -> Double -> m ()
+eventButtonWriteXRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 64) (val' :: CDouble)
+
+data EventButtonXRootFieldInfo
+instance AttrInfo EventButtonXRootFieldInfo where
+    type AttrAllowedOps EventButtonXRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventButtonXRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventButtonXRootFieldInfo = (~) EventButton
+    type AttrGetType EventButtonXRootFieldInfo = Double
+    type AttrLabel EventButtonXRootFieldInfo = "x_root"
+    attrGet _ = eventButtonReadXRoot
+    attrSet _ = eventButtonWriteXRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventButtonXRoot :: AttrLabelProxy "xRoot"
+eventButtonXRoot = AttrLabelProxy
+
+
+eventButtonReadYRoot :: MonadIO m => EventButton -> m Double
+eventButtonReadYRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 72) :: IO CDouble
     let val' = realToFrac val
     return val'
+
+eventButtonWriteYRoot :: MonadIO m => EventButton -> Double -> m ()
+eventButtonWriteYRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 72) (val' :: CDouble)
+
+data EventButtonYRootFieldInfo
+instance AttrInfo EventButtonYRootFieldInfo where
+    type AttrAllowedOps EventButtonYRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventButtonYRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventButtonYRootFieldInfo = (~) EventButton
+    type AttrGetType EventButtonYRootFieldInfo = Double
+    type AttrLabel EventButtonYRootFieldInfo = "y_root"
+    attrGet _ = eventButtonReadYRoot
+    attrSet _ = eventButtonWriteYRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventButtonYRoot :: AttrLabelProxy "yRoot"
+eventButtonYRoot = AttrLabelProxy
+
+
+
+type instance AttributeList EventButton = EventButtonAttributeList
+type EventButtonAttributeList = ('[ '("type", EventButtonTypeFieldInfo), '("window", EventButtonWindowFieldInfo), '("sendEvent", EventButtonSendEventFieldInfo), '("time", EventButtonTimeFieldInfo), '("x", EventButtonXFieldInfo), '("y", EventButtonYFieldInfo), '("axes", EventButtonAxesFieldInfo), '("state", EventButtonStateFieldInfo), '("button", EventButtonButtonFieldInfo), '("device", EventButtonDeviceFieldInfo), '("xRoot", EventButtonXRootFieldInfo), '("yRoot", EventButtonYRootFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventButtonMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventButtonMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventButton.hs-boot b/GI/Gdk/Structs/EventButton.hs-boot
--- a/GI/Gdk/Structs/EventButton.hs-boot
+++ b/GI/Gdk/Structs/EventButton.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventButton where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventConfigure.hs b/GI/Gdk/Structs/EventConfigure.hs
--- a/GI/Gdk/Structs/EventConfigure.hs
+++ b/GI/Gdk/Structs/EventConfigure.hs
@@ -19,40 +19,55 @@
 
  -- * Properties
 -- ** Height
+    eventConfigureHeight                    ,
     eventConfigureReadHeight                ,
+    eventConfigureWriteHeight               ,
 
 
 -- ** SendEvent
     eventConfigureReadSendEvent             ,
+    eventConfigureSendEvent                 ,
+    eventConfigureWriteSendEvent            ,
 
 
 -- ** Type
     eventConfigureReadType                  ,
+    eventConfigureType                      ,
+    eventConfigureWriteType                 ,
 
 
 -- ** Width
     eventConfigureReadWidth                 ,
+    eventConfigureWidth                     ,
+    eventConfigureWriteWidth                ,
 
 
 -- ** Window
+    eventConfigureClearWindow               ,
     eventConfigureReadWindow                ,
+    eventConfigureWindow                    ,
+    eventConfigureWriteWindow               ,
 
 
 -- ** X
     eventConfigureReadX                     ,
+    eventConfigureWriteX                    ,
+    eventConfigureX                         ,
 
 
 -- ** Y
     eventConfigureReadY                     ,
+    eventConfigureWriteY                    ,
+    eventConfigureY                         ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -65,45 +80,203 @@
 newZeroEventConfigure :: MonadIO m => m EventConfigure
 newZeroEventConfigure = liftIO $ callocBytes 40 >>= wrapPtr EventConfigure
 
+instance tag ~ 'AttrSet => Constructible EventConfigure tag where
+    new _ attrs = do
+        o <- newZeroEventConfigure
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventConfigure :: Maybe EventConfigure
 noEventConfigure = Nothing
 
-eventConfigureReadType :: EventConfigure -> IO EventType
-eventConfigureReadType s = withManagedPtr s $ \ptr -> do
+eventConfigureReadType :: MonadIO m => EventConfigure -> m EventType
+eventConfigureReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventConfigureReadWindow :: EventConfigure -> IO Window
-eventConfigureReadWindow s = withManagedPtr s $ \ptr -> do
+eventConfigureWriteType :: MonadIO m => EventConfigure -> EventType -> m ()
+eventConfigureWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventConfigureTypeFieldInfo
+instance AttrInfo EventConfigureTypeFieldInfo where
+    type AttrAllowedOps EventConfigureTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventConfigureTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventConfigureTypeFieldInfo = (~) EventConfigure
+    type AttrGetType EventConfigureTypeFieldInfo = EventType
+    type AttrLabel EventConfigureTypeFieldInfo = "type"
+    attrGet _ = eventConfigureReadType
+    attrSet _ = eventConfigureWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventConfigureType :: AttrLabelProxy "type"
+eventConfigureType = AttrLabelProxy
+
+
+eventConfigureReadWindow :: MonadIO m => EventConfigure -> m (Maybe Window)
+eventConfigureReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventConfigureReadSendEvent :: EventConfigure -> IO Int8
-eventConfigureReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventConfigureWriteWindow :: MonadIO m => EventConfigure -> Ptr Window -> m ()
+eventConfigureWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventConfigureClearWindow :: MonadIO m => EventConfigure -> m ()
+eventConfigureClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventConfigureWindowFieldInfo
+instance AttrInfo EventConfigureWindowFieldInfo where
+    type AttrAllowedOps EventConfigureWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventConfigureWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventConfigureWindowFieldInfo = (~) EventConfigure
+    type AttrGetType EventConfigureWindowFieldInfo = Maybe Window
+    type AttrLabel EventConfigureWindowFieldInfo = "window"
+    attrGet _ = eventConfigureReadWindow
+    attrSet _ = eventConfigureWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventConfigureClearWindow
+
+eventConfigureWindow :: AttrLabelProxy "window"
+eventConfigureWindow = AttrLabelProxy
+
+
+eventConfigureReadSendEvent :: MonadIO m => EventConfigure -> m Int8
+eventConfigureReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventConfigureReadX :: EventConfigure -> IO Int32
-eventConfigureReadX s = withManagedPtr s $ \ptr -> do
+eventConfigureWriteSendEvent :: MonadIO m => EventConfigure -> Int8 -> m ()
+eventConfigureWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventConfigureSendEventFieldInfo
+instance AttrInfo EventConfigureSendEventFieldInfo where
+    type AttrAllowedOps EventConfigureSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventConfigureSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventConfigureSendEventFieldInfo = (~) EventConfigure
+    type AttrGetType EventConfigureSendEventFieldInfo = Int8
+    type AttrLabel EventConfigureSendEventFieldInfo = "send_event"
+    attrGet _ = eventConfigureReadSendEvent
+    attrSet _ = eventConfigureWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventConfigureSendEvent :: AttrLabelProxy "sendEvent"
+eventConfigureSendEvent = AttrLabelProxy
+
+
+eventConfigureReadX :: MonadIO m => EventConfigure -> m Int32
+eventConfigureReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Int32
     return val
 
-eventConfigureReadY :: EventConfigure -> IO Int32
-eventConfigureReadY s = withManagedPtr s $ \ptr -> do
+eventConfigureWriteX :: MonadIO m => EventConfigure -> Int32 -> m ()
+eventConfigureWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Int32)
+
+data EventConfigureXFieldInfo
+instance AttrInfo EventConfigureXFieldInfo where
+    type AttrAllowedOps EventConfigureXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventConfigureXFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint EventConfigureXFieldInfo = (~) EventConfigure
+    type AttrGetType EventConfigureXFieldInfo = Int32
+    type AttrLabel EventConfigureXFieldInfo = "x"
+    attrGet _ = eventConfigureReadX
+    attrSet _ = eventConfigureWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventConfigureX :: AttrLabelProxy "x"
+eventConfigureX = AttrLabelProxy
+
+
+eventConfigureReadY :: MonadIO m => EventConfigure -> m Int32
+eventConfigureReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO Int32
     return val
 
-eventConfigureReadWidth :: EventConfigure -> IO Int32
-eventConfigureReadWidth s = withManagedPtr s $ \ptr -> do
+eventConfigureWriteY :: MonadIO m => EventConfigure -> Int32 -> m ()
+eventConfigureWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Int32)
+
+data EventConfigureYFieldInfo
+instance AttrInfo EventConfigureYFieldInfo where
+    type AttrAllowedOps EventConfigureYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventConfigureYFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint EventConfigureYFieldInfo = (~) EventConfigure
+    type AttrGetType EventConfigureYFieldInfo = Int32
+    type AttrLabel EventConfigureYFieldInfo = "y"
+    attrGet _ = eventConfigureReadY
+    attrSet _ = eventConfigureWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventConfigureY :: AttrLabelProxy "y"
+eventConfigureY = AttrLabelProxy
+
+
+eventConfigureReadWidth :: MonadIO m => EventConfigure -> m Int32
+eventConfigureReadWidth s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 28) :: IO Int32
     return val
 
-eventConfigureReadHeight :: EventConfigure -> IO Int32
-eventConfigureReadHeight s = withManagedPtr s $ \ptr -> do
+eventConfigureWriteWidth :: MonadIO m => EventConfigure -> Int32 -> m ()
+eventConfigureWriteWidth s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 28) (val :: Int32)
+
+data EventConfigureWidthFieldInfo
+instance AttrInfo EventConfigureWidthFieldInfo where
+    type AttrAllowedOps EventConfigureWidthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventConfigureWidthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint EventConfigureWidthFieldInfo = (~) EventConfigure
+    type AttrGetType EventConfigureWidthFieldInfo = Int32
+    type AttrLabel EventConfigureWidthFieldInfo = "width"
+    attrGet _ = eventConfigureReadWidth
+    attrSet _ = eventConfigureWriteWidth
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventConfigureWidth :: AttrLabelProxy "width"
+eventConfigureWidth = AttrLabelProxy
+
+
+eventConfigureReadHeight :: MonadIO m => EventConfigure -> m Int32
+eventConfigureReadHeight s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO Int32
     return val
+
+eventConfigureWriteHeight :: MonadIO m => EventConfigure -> Int32 -> m ()
+eventConfigureWriteHeight s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Int32)
+
+data EventConfigureHeightFieldInfo
+instance AttrInfo EventConfigureHeightFieldInfo where
+    type AttrAllowedOps EventConfigureHeightFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventConfigureHeightFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint EventConfigureHeightFieldInfo = (~) EventConfigure
+    type AttrGetType EventConfigureHeightFieldInfo = Int32
+    type AttrLabel EventConfigureHeightFieldInfo = "height"
+    attrGet _ = eventConfigureReadHeight
+    attrSet _ = eventConfigureWriteHeight
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventConfigureHeight :: AttrLabelProxy "height"
+eventConfigureHeight = AttrLabelProxy
+
+
+
+type instance AttributeList EventConfigure = EventConfigureAttributeList
+type EventConfigureAttributeList = ('[ '("type", EventConfigureTypeFieldInfo), '("window", EventConfigureWindowFieldInfo), '("sendEvent", EventConfigureSendEventFieldInfo), '("x", EventConfigureXFieldInfo), '("y", EventConfigureYFieldInfo), '("width", EventConfigureWidthFieldInfo), '("height", EventConfigureHeightFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventConfigureMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventConfigureMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventConfigure.hs-boot b/GI/Gdk/Structs/EventConfigure.hs-boot
--- a/GI/Gdk/Structs/EventConfigure.hs-boot
+++ b/GI/Gdk/Structs/EventConfigure.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventConfigure where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventCrossing.hs b/GI/Gdk/Structs/EventCrossing.hs
--- a/GI/Gdk/Structs/EventCrossing.hs
+++ b/GI/Gdk/Structs/EventCrossing.hs
@@ -19,64 +19,92 @@
 
  -- * Properties
 -- ** Detail
+    eventCrossingDetail                     ,
     eventCrossingReadDetail                 ,
+    eventCrossingWriteDetail                ,
 
 
 -- ** Focus
+    eventCrossingFocus                      ,
     eventCrossingReadFocus                  ,
+    eventCrossingWriteFocus                 ,
 
 
 -- ** Mode
+    eventCrossingMode                       ,
     eventCrossingReadMode                   ,
+    eventCrossingWriteMode                  ,
 
 
 -- ** SendEvent
     eventCrossingReadSendEvent              ,
+    eventCrossingSendEvent                  ,
+    eventCrossingWriteSendEvent             ,
 
 
 -- ** State
     eventCrossingReadState                  ,
+    eventCrossingState                      ,
+    eventCrossingWriteState                 ,
 
 
 -- ** Subwindow
+    eventCrossingClearSubwindow             ,
     eventCrossingReadSubwindow              ,
+    eventCrossingSubwindow                  ,
+    eventCrossingWriteSubwindow             ,
 
 
 -- ** Time
     eventCrossingReadTime                   ,
+    eventCrossingTime                       ,
+    eventCrossingWriteTime                  ,
 
 
 -- ** Type
     eventCrossingReadType                   ,
+    eventCrossingType                       ,
+    eventCrossingWriteType                  ,
 
 
 -- ** Window
+    eventCrossingClearWindow                ,
     eventCrossingReadWindow                 ,
+    eventCrossingWindow                     ,
+    eventCrossingWriteWindow                ,
 
 
 -- ** X
     eventCrossingReadX                      ,
+    eventCrossingWriteX                     ,
+    eventCrossingX                          ,
 
 
 -- ** XRoot
     eventCrossingReadXRoot                  ,
+    eventCrossingWriteXRoot                 ,
+    eventCrossingXRoot                      ,
 
 
 -- ** Y
     eventCrossingReadY                      ,
+    eventCrossingWriteY                     ,
+    eventCrossingY                          ,
 
 
 -- ** YRoot
     eventCrossingReadYRoot                  ,
+    eventCrossingWriteYRoot                 ,
+    eventCrossingYRoot                      ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -89,84 +117,376 @@
 newZeroEventCrossing :: MonadIO m => m EventCrossing
 newZeroEventCrossing = liftIO $ callocBytes 88 >>= wrapPtr EventCrossing
 
+instance tag ~ 'AttrSet => Constructible EventCrossing tag where
+    new _ attrs = do
+        o <- newZeroEventCrossing
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventCrossing :: Maybe EventCrossing
 noEventCrossing = Nothing
 
-eventCrossingReadType :: EventCrossing -> IO EventType
-eventCrossingReadType s = withManagedPtr s $ \ptr -> do
+eventCrossingReadType :: MonadIO m => EventCrossing -> m EventType
+eventCrossingReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventCrossingReadWindow :: EventCrossing -> IO Window
-eventCrossingReadWindow s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteType :: MonadIO m => EventCrossing -> EventType -> m ()
+eventCrossingWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventCrossingTypeFieldInfo
+instance AttrInfo EventCrossingTypeFieldInfo where
+    type AttrAllowedOps EventCrossingTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventCrossingTypeFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingTypeFieldInfo = EventType
+    type AttrLabel EventCrossingTypeFieldInfo = "type"
+    attrGet _ = eventCrossingReadType
+    attrSet _ = eventCrossingWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingType :: AttrLabelProxy "type"
+eventCrossingType = AttrLabelProxy
+
+
+eventCrossingReadWindow :: MonadIO m => EventCrossing -> m (Maybe Window)
+eventCrossingReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventCrossingReadSendEvent :: EventCrossing -> IO Int8
-eventCrossingReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteWindow :: MonadIO m => EventCrossing -> Ptr Window -> m ()
+eventCrossingWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventCrossingClearWindow :: MonadIO m => EventCrossing -> m ()
+eventCrossingClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventCrossingWindowFieldInfo
+instance AttrInfo EventCrossingWindowFieldInfo where
+    type AttrAllowedOps EventCrossingWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventCrossingWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventCrossingWindowFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingWindowFieldInfo = Maybe Window
+    type AttrLabel EventCrossingWindowFieldInfo = "window"
+    attrGet _ = eventCrossingReadWindow
+    attrSet _ = eventCrossingWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventCrossingClearWindow
+
+eventCrossingWindow :: AttrLabelProxy "window"
+eventCrossingWindow = AttrLabelProxy
+
+
+eventCrossingReadSendEvent :: MonadIO m => EventCrossing -> m Int8
+eventCrossingReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventCrossingReadSubwindow :: EventCrossing -> IO Window
-eventCrossingReadSubwindow s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteSendEvent :: MonadIO m => EventCrossing -> Int8 -> m ()
+eventCrossingWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventCrossingSendEventFieldInfo
+instance AttrInfo EventCrossingSendEventFieldInfo where
+    type AttrAllowedOps EventCrossingSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventCrossingSendEventFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingSendEventFieldInfo = Int8
+    type AttrLabel EventCrossingSendEventFieldInfo = "send_event"
+    attrGet _ = eventCrossingReadSendEvent
+    attrSet _ = eventCrossingWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingSendEvent :: AttrLabelProxy "sendEvent"
+eventCrossingSendEvent = AttrLabelProxy
+
+
+eventCrossingReadSubwindow :: MonadIO m => EventCrossing -> m (Maybe Window)
+eventCrossingReadSubwindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventCrossingReadTime :: EventCrossing -> IO Word32
-eventCrossingReadTime s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteSubwindow :: MonadIO m => EventCrossing -> Ptr Window -> m ()
+eventCrossingWriteSubwindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Ptr Window)
+
+eventCrossingClearSubwindow :: MonadIO m => EventCrossing -> m ()
+eventCrossingClearSubwindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (nullPtr :: Ptr Window)
+
+data EventCrossingSubwindowFieldInfo
+instance AttrInfo EventCrossingSubwindowFieldInfo where
+    type AttrAllowedOps EventCrossingSubwindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventCrossingSubwindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventCrossingSubwindowFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingSubwindowFieldInfo = Maybe Window
+    type AttrLabel EventCrossingSubwindowFieldInfo = "subwindow"
+    attrGet _ = eventCrossingReadSubwindow
+    attrSet _ = eventCrossingWriteSubwindow
+    attrConstruct = undefined
+    attrClear _ = eventCrossingClearSubwindow
+
+eventCrossingSubwindow :: AttrLabelProxy "subwindow"
+eventCrossingSubwindow = AttrLabelProxy
+
+
+eventCrossingReadTime :: MonadIO m => EventCrossing -> m Word32
+eventCrossingReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO Word32
     return val
 
-eventCrossingReadX :: EventCrossing -> IO Double
-eventCrossingReadX s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteTime :: MonadIO m => EventCrossing -> Word32 -> m ()
+eventCrossingWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Word32)
+
+data EventCrossingTimeFieldInfo
+instance AttrInfo EventCrossingTimeFieldInfo where
+    type AttrAllowedOps EventCrossingTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventCrossingTimeFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingTimeFieldInfo = Word32
+    type AttrLabel EventCrossingTimeFieldInfo = "time"
+    attrGet _ = eventCrossingReadTime
+    attrSet _ = eventCrossingWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingTime :: AttrLabelProxy "time"
+eventCrossingTime = AttrLabelProxy
+
+
+eventCrossingReadX :: MonadIO m => EventCrossing -> m Double
+eventCrossingReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventCrossingReadY :: EventCrossing -> IO Double
-eventCrossingReadY s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteX :: MonadIO m => EventCrossing -> Double -> m ()
+eventCrossingWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 40) (val' :: CDouble)
+
+data EventCrossingXFieldInfo
+instance AttrInfo EventCrossingXFieldInfo where
+    type AttrAllowedOps EventCrossingXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingXFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventCrossingXFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingXFieldInfo = Double
+    type AttrLabel EventCrossingXFieldInfo = "x"
+    attrGet _ = eventCrossingReadX
+    attrSet _ = eventCrossingWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingX :: AttrLabelProxy "x"
+eventCrossingX = AttrLabelProxy
+
+
+eventCrossingReadY :: MonadIO m => EventCrossing -> m Double
+eventCrossingReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventCrossingReadXRoot :: EventCrossing -> IO Double
-eventCrossingReadXRoot s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteY :: MonadIO m => EventCrossing -> Double -> m ()
+eventCrossingWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 48) (val' :: CDouble)
+
+data EventCrossingYFieldInfo
+instance AttrInfo EventCrossingYFieldInfo where
+    type AttrAllowedOps EventCrossingYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingYFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventCrossingYFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingYFieldInfo = Double
+    type AttrLabel EventCrossingYFieldInfo = "y"
+    attrGet _ = eventCrossingReadY
+    attrSet _ = eventCrossingWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingY :: AttrLabelProxy "y"
+eventCrossingY = AttrLabelProxy
+
+
+eventCrossingReadXRoot :: MonadIO m => EventCrossing -> m Double
+eventCrossingReadXRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 56) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventCrossingReadYRoot :: EventCrossing -> IO Double
-eventCrossingReadYRoot s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteXRoot :: MonadIO m => EventCrossing -> Double -> m ()
+eventCrossingWriteXRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 56) (val' :: CDouble)
+
+data EventCrossingXRootFieldInfo
+instance AttrInfo EventCrossingXRootFieldInfo where
+    type AttrAllowedOps EventCrossingXRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingXRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventCrossingXRootFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingXRootFieldInfo = Double
+    type AttrLabel EventCrossingXRootFieldInfo = "x_root"
+    attrGet _ = eventCrossingReadXRoot
+    attrSet _ = eventCrossingWriteXRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingXRoot :: AttrLabelProxy "xRoot"
+eventCrossingXRoot = AttrLabelProxy
+
+
+eventCrossingReadYRoot :: MonadIO m => EventCrossing -> m Double
+eventCrossingReadYRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 64) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventCrossingReadMode :: EventCrossing -> IO CrossingMode
-eventCrossingReadMode s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteYRoot :: MonadIO m => EventCrossing -> Double -> m ()
+eventCrossingWriteYRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 64) (val' :: CDouble)
+
+data EventCrossingYRootFieldInfo
+instance AttrInfo EventCrossingYRootFieldInfo where
+    type AttrAllowedOps EventCrossingYRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingYRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventCrossingYRootFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingYRootFieldInfo = Double
+    type AttrLabel EventCrossingYRootFieldInfo = "y_root"
+    attrGet _ = eventCrossingReadYRoot
+    attrSet _ = eventCrossingWriteYRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingYRoot :: AttrLabelProxy "yRoot"
+eventCrossingYRoot = AttrLabelProxy
+
+
+eventCrossingReadMode :: MonadIO m => EventCrossing -> m CrossingMode
+eventCrossingReadMode s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 72) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventCrossingReadDetail :: EventCrossing -> IO NotifyType
-eventCrossingReadDetail s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteMode :: MonadIO m => EventCrossing -> CrossingMode -> m ()
+eventCrossingWriteMode s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 72) (val' :: CUInt)
+
+data EventCrossingModeFieldInfo
+instance AttrInfo EventCrossingModeFieldInfo where
+    type AttrAllowedOps EventCrossingModeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingModeFieldInfo = (~) CrossingMode
+    type AttrBaseTypeConstraint EventCrossingModeFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingModeFieldInfo = CrossingMode
+    type AttrLabel EventCrossingModeFieldInfo = "mode"
+    attrGet _ = eventCrossingReadMode
+    attrSet _ = eventCrossingWriteMode
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingMode :: AttrLabelProxy "mode"
+eventCrossingMode = AttrLabelProxy
+
+
+eventCrossingReadDetail :: MonadIO m => EventCrossing -> m NotifyType
+eventCrossingReadDetail s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 76) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventCrossingReadFocus :: EventCrossing -> IO Bool
-eventCrossingReadFocus s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteDetail :: MonadIO m => EventCrossing -> NotifyType -> m ()
+eventCrossingWriteDetail s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 76) (val' :: CUInt)
+
+data EventCrossingDetailFieldInfo
+instance AttrInfo EventCrossingDetailFieldInfo where
+    type AttrAllowedOps EventCrossingDetailFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingDetailFieldInfo = (~) NotifyType
+    type AttrBaseTypeConstraint EventCrossingDetailFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingDetailFieldInfo = NotifyType
+    type AttrLabel EventCrossingDetailFieldInfo = "detail"
+    attrGet _ = eventCrossingReadDetail
+    attrSet _ = eventCrossingWriteDetail
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingDetail :: AttrLabelProxy "detail"
+eventCrossingDetail = AttrLabelProxy
+
+
+eventCrossingReadFocus :: MonadIO m => EventCrossing -> m Bool
+eventCrossingReadFocus s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 80) :: IO CInt
     let val' = (/= 0) val
     return val'
 
-eventCrossingReadState :: EventCrossing -> IO [ModifierType]
-eventCrossingReadState s = withManagedPtr s $ \ptr -> do
+eventCrossingWriteFocus :: MonadIO m => EventCrossing -> Bool -> m ()
+eventCrossingWriteFocus s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 80) (val' :: CInt)
+
+data EventCrossingFocusFieldInfo
+instance AttrInfo EventCrossingFocusFieldInfo where
+    type AttrAllowedOps EventCrossingFocusFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingFocusFieldInfo = (~) Bool
+    type AttrBaseTypeConstraint EventCrossingFocusFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingFocusFieldInfo = Bool
+    type AttrLabel EventCrossingFocusFieldInfo = "focus"
+    attrGet _ = eventCrossingReadFocus
+    attrSet _ = eventCrossingWriteFocus
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingFocus :: AttrLabelProxy "focus"
+eventCrossingFocus = AttrLabelProxy
+
+
+eventCrossingReadState :: MonadIO m => EventCrossing -> m [ModifierType]
+eventCrossingReadState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 84) :: IO CUInt
     let val' = wordToGFlags val
     return val'
+
+eventCrossingWriteState :: MonadIO m => EventCrossing -> [ModifierType] -> m ()
+eventCrossingWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = gflagsToWord val
+    poke (ptr `plusPtr` 84) (val' :: CUInt)
+
+data EventCrossingStateFieldInfo
+instance AttrInfo EventCrossingStateFieldInfo where
+    type AttrAllowedOps EventCrossingStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventCrossingStateFieldInfo = (~) [ModifierType]
+    type AttrBaseTypeConstraint EventCrossingStateFieldInfo = (~) EventCrossing
+    type AttrGetType EventCrossingStateFieldInfo = [ModifierType]
+    type AttrLabel EventCrossingStateFieldInfo = "state"
+    attrGet _ = eventCrossingReadState
+    attrSet _ = eventCrossingWriteState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventCrossingState :: AttrLabelProxy "state"
+eventCrossingState = AttrLabelProxy
+
+
+
+type instance AttributeList EventCrossing = EventCrossingAttributeList
+type EventCrossingAttributeList = ('[ '("type", EventCrossingTypeFieldInfo), '("window", EventCrossingWindowFieldInfo), '("sendEvent", EventCrossingSendEventFieldInfo), '("subwindow", EventCrossingSubwindowFieldInfo), '("time", EventCrossingTimeFieldInfo), '("x", EventCrossingXFieldInfo), '("y", EventCrossingYFieldInfo), '("xRoot", EventCrossingXRootFieldInfo), '("yRoot", EventCrossingYRootFieldInfo), '("mode", EventCrossingModeFieldInfo), '("detail", EventCrossingDetailFieldInfo), '("focus", EventCrossingFocusFieldInfo), '("state", EventCrossingStateFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventCrossingMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventCrossingMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventCrossing.hs-boot b/GI/Gdk/Structs/EventCrossing.hs-boot
--- a/GI/Gdk/Structs/EventCrossing.hs-boot
+++ b/GI/Gdk/Structs/EventCrossing.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventCrossing where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventDND.hs b/GI/Gdk/Structs/EventDND.hs
--- a/GI/Gdk/Structs/EventDND.hs
+++ b/GI/Gdk/Structs/EventDND.hs
@@ -19,40 +19,56 @@
 
  -- * Properties
 -- ** Context
+    eventDNDClearContext                    ,
+    eventDNDContext                         ,
     eventDNDReadContext                     ,
+    eventDNDWriteContext                    ,
 
 
 -- ** SendEvent
     eventDNDReadSendEvent                   ,
+    eventDNDSendEvent                       ,
+    eventDNDWriteSendEvent                  ,
 
 
 -- ** Time
     eventDNDReadTime                        ,
+    eventDNDTime                            ,
+    eventDNDWriteTime                       ,
 
 
 -- ** Type
     eventDNDReadType                        ,
+    eventDNDType                            ,
+    eventDNDWriteType                       ,
 
 
 -- ** Window
+    eventDNDClearWindow                     ,
     eventDNDReadWindow                      ,
+    eventDNDWindow                          ,
+    eventDNDWriteWindow                     ,
 
 
 -- ** XRoot
     eventDNDReadXRoot                       ,
+    eventDNDWriteXRoot                      ,
+    eventDNDXRoot                           ,
 
 
 -- ** YRoot
     eventDNDReadYRoot                       ,
+    eventDNDWriteYRoot                      ,
+    eventDNDYRoot                           ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -65,46 +81,210 @@
 newZeroEventDND :: MonadIO m => m EventDND
 newZeroEventDND = liftIO $ callocBytes 40 >>= wrapPtr EventDND
 
+instance tag ~ 'AttrSet => Constructible EventDND tag where
+    new _ attrs = do
+        o <- newZeroEventDND
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventDND :: Maybe EventDND
 noEventDND = Nothing
 
-eventDNDReadType :: EventDND -> IO EventType
-eventDNDReadType s = withManagedPtr s $ \ptr -> do
+eventDNDReadType :: MonadIO m => EventDND -> m EventType
+eventDNDReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventDNDReadWindow :: EventDND -> IO Window
-eventDNDReadWindow s = withManagedPtr s $ \ptr -> do
+eventDNDWriteType :: MonadIO m => EventDND -> EventType -> m ()
+eventDNDWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventDNDTypeFieldInfo
+instance AttrInfo EventDNDTypeFieldInfo where
+    type AttrAllowedOps EventDNDTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventDNDTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventDNDTypeFieldInfo = (~) EventDND
+    type AttrGetType EventDNDTypeFieldInfo = EventType
+    type AttrLabel EventDNDTypeFieldInfo = "type"
+    attrGet _ = eventDNDReadType
+    attrSet _ = eventDNDWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventDNDType :: AttrLabelProxy "type"
+eventDNDType = AttrLabelProxy
+
+
+eventDNDReadWindow :: MonadIO m => EventDND -> m (Maybe Window)
+eventDNDReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventDNDReadSendEvent :: EventDND -> IO Int8
-eventDNDReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventDNDWriteWindow :: MonadIO m => EventDND -> Ptr Window -> m ()
+eventDNDWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventDNDClearWindow :: MonadIO m => EventDND -> m ()
+eventDNDClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventDNDWindowFieldInfo
+instance AttrInfo EventDNDWindowFieldInfo where
+    type AttrAllowedOps EventDNDWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventDNDWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventDNDWindowFieldInfo = (~) EventDND
+    type AttrGetType EventDNDWindowFieldInfo = Maybe Window
+    type AttrLabel EventDNDWindowFieldInfo = "window"
+    attrGet _ = eventDNDReadWindow
+    attrSet _ = eventDNDWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventDNDClearWindow
+
+eventDNDWindow :: AttrLabelProxy "window"
+eventDNDWindow = AttrLabelProxy
+
+
+eventDNDReadSendEvent :: MonadIO m => EventDND -> m Int8
+eventDNDReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventDNDReadContext :: EventDND -> IO DragContext
-eventDNDReadContext s = withManagedPtr s $ \ptr -> do
+eventDNDWriteSendEvent :: MonadIO m => EventDND -> Int8 -> m ()
+eventDNDWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventDNDSendEventFieldInfo
+instance AttrInfo EventDNDSendEventFieldInfo where
+    type AttrAllowedOps EventDNDSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventDNDSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventDNDSendEventFieldInfo = (~) EventDND
+    type AttrGetType EventDNDSendEventFieldInfo = Int8
+    type AttrLabel EventDNDSendEventFieldInfo = "send_event"
+    attrGet _ = eventDNDReadSendEvent
+    attrSet _ = eventDNDWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventDNDSendEvent :: AttrLabelProxy "sendEvent"
+eventDNDSendEvent = AttrLabelProxy
+
+
+eventDNDReadContext :: MonadIO m => EventDND -> m (Maybe DragContext)
+eventDNDReadContext s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO (Ptr DragContext)
-    val' <- (newObject DragContext) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject DragContext) val'
+        return val''
+    return result
 
-eventDNDReadTime :: EventDND -> IO Word32
-eventDNDReadTime s = withManagedPtr s $ \ptr -> do
+eventDNDWriteContext :: MonadIO m => EventDND -> Ptr DragContext -> m ()
+eventDNDWriteContext s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Ptr DragContext)
+
+eventDNDClearContext :: MonadIO m => EventDND -> m ()
+eventDNDClearContext s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (nullPtr :: Ptr DragContext)
+
+data EventDNDContextFieldInfo
+instance AttrInfo EventDNDContextFieldInfo where
+    type AttrAllowedOps EventDNDContextFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventDNDContextFieldInfo = (~) (Ptr DragContext)
+    type AttrBaseTypeConstraint EventDNDContextFieldInfo = (~) EventDND
+    type AttrGetType EventDNDContextFieldInfo = Maybe DragContext
+    type AttrLabel EventDNDContextFieldInfo = "context"
+    attrGet _ = eventDNDReadContext
+    attrSet _ = eventDNDWriteContext
+    attrConstruct = undefined
+    attrClear _ = eventDNDClearContext
+
+eventDNDContext :: AttrLabelProxy "context"
+eventDNDContext = AttrLabelProxy
+
+
+eventDNDReadTime :: MonadIO m => EventDND -> m Word32
+eventDNDReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO Word32
     return val
 
-eventDNDReadXRoot :: EventDND -> IO Int16
-eventDNDReadXRoot s = withManagedPtr s $ \ptr -> do
+eventDNDWriteTime :: MonadIO m => EventDND -> Word32 -> m ()
+eventDNDWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Word32)
+
+data EventDNDTimeFieldInfo
+instance AttrInfo EventDNDTimeFieldInfo where
+    type AttrAllowedOps EventDNDTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventDNDTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventDNDTimeFieldInfo = (~) EventDND
+    type AttrGetType EventDNDTimeFieldInfo = Word32
+    type AttrLabel EventDNDTimeFieldInfo = "time"
+    attrGet _ = eventDNDReadTime
+    attrSet _ = eventDNDWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventDNDTime :: AttrLabelProxy "time"
+eventDNDTime = AttrLabelProxy
+
+
+eventDNDReadXRoot :: MonadIO m => EventDND -> m Int16
+eventDNDReadXRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 36) :: IO Int16
     return val
 
-eventDNDReadYRoot :: EventDND -> IO Int16
-eventDNDReadYRoot s = withManagedPtr s $ \ptr -> do
+eventDNDWriteXRoot :: MonadIO m => EventDND -> Int16 -> m ()
+eventDNDWriteXRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 36) (val :: Int16)
+
+data EventDNDXRootFieldInfo
+instance AttrInfo EventDNDXRootFieldInfo where
+    type AttrAllowedOps EventDNDXRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventDNDXRootFieldInfo = (~) Int16
+    type AttrBaseTypeConstraint EventDNDXRootFieldInfo = (~) EventDND
+    type AttrGetType EventDNDXRootFieldInfo = Int16
+    type AttrLabel EventDNDXRootFieldInfo = "x_root"
+    attrGet _ = eventDNDReadXRoot
+    attrSet _ = eventDNDWriteXRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventDNDXRoot :: AttrLabelProxy "xRoot"
+eventDNDXRoot = AttrLabelProxy
+
+
+eventDNDReadYRoot :: MonadIO m => EventDND -> m Int16
+eventDNDReadYRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 38) :: IO Int16
     return val
+
+eventDNDWriteYRoot :: MonadIO m => EventDND -> Int16 -> m ()
+eventDNDWriteYRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 38) (val :: Int16)
+
+data EventDNDYRootFieldInfo
+instance AttrInfo EventDNDYRootFieldInfo where
+    type AttrAllowedOps EventDNDYRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventDNDYRootFieldInfo = (~) Int16
+    type AttrBaseTypeConstraint EventDNDYRootFieldInfo = (~) EventDND
+    type AttrGetType EventDNDYRootFieldInfo = Int16
+    type AttrLabel EventDNDYRootFieldInfo = "y_root"
+    attrGet _ = eventDNDReadYRoot
+    attrSet _ = eventDNDWriteYRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventDNDYRoot :: AttrLabelProxy "yRoot"
+eventDNDYRoot = AttrLabelProxy
+
+
+
+type instance AttributeList EventDND = EventDNDAttributeList
+type EventDNDAttributeList = ('[ '("type", EventDNDTypeFieldInfo), '("window", EventDNDWindowFieldInfo), '("sendEvent", EventDNDSendEventFieldInfo), '("context", EventDNDContextFieldInfo), '("time", EventDNDTimeFieldInfo), '("xRoot", EventDNDXRootFieldInfo), '("yRoot", EventDNDYRootFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventDNDMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventDNDMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventDND.hs-boot b/GI/Gdk/Structs/EventDND.hs-boot
--- a/GI/Gdk/Structs/EventDND.hs-boot
+++ b/GI/Gdk/Structs/EventDND.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventDND where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventExpose.hs b/GI/Gdk/Structs/EventExpose.hs
--- a/GI/Gdk/Structs/EventExpose.hs
+++ b/GI/Gdk/Structs/EventExpose.hs
@@ -20,36 +20,51 @@
 
  -- * Properties
 -- ** Area
+    eventExposeArea                         ,
+    eventExposeClearArea                    ,
     eventExposeReadArea                     ,
+    eventExposeWriteArea                    ,
 
 
 -- ** Count
+    eventExposeCount                        ,
     eventExposeReadCount                    ,
+    eventExposeWriteCount                   ,
 
 
 -- ** Region
+    eventExposeClearRegion                  ,
     eventExposeReadRegion                   ,
+    eventExposeRegion                       ,
+    eventExposeWriteRegion                  ,
 
 
 -- ** SendEvent
     eventExposeReadSendEvent                ,
+    eventExposeSendEvent                    ,
+    eventExposeWriteSendEvent               ,
 
 
 -- ** Type
     eventExposeReadType                     ,
+    eventExposeType                         ,
+    eventExposeWriteType                    ,
 
 
 -- ** Window
+    eventExposeClearWindow                  ,
     eventExposeReadWindow                   ,
+    eventExposeWindow                       ,
+    eventExposeWriteWindow                  ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -63,42 +78,192 @@
 newZeroEventExpose :: MonadIO m => m EventExpose
 newZeroEventExpose = liftIO $ callocBytes 56 >>= wrapPtr EventExpose
 
+instance tag ~ 'AttrSet => Constructible EventExpose tag where
+    new _ attrs = do
+        o <- newZeroEventExpose
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventExpose :: Maybe EventExpose
 noEventExpose = Nothing
 
-eventExposeReadType :: EventExpose -> IO EventType
-eventExposeReadType s = withManagedPtr s $ \ptr -> do
+eventExposeReadType :: MonadIO m => EventExpose -> m EventType
+eventExposeReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventExposeReadWindow :: EventExpose -> IO Window
-eventExposeReadWindow s = withManagedPtr s $ \ptr -> do
+eventExposeWriteType :: MonadIO m => EventExpose -> EventType -> m ()
+eventExposeWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventExposeTypeFieldInfo
+instance AttrInfo EventExposeTypeFieldInfo where
+    type AttrAllowedOps EventExposeTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventExposeTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventExposeTypeFieldInfo = (~) EventExpose
+    type AttrGetType EventExposeTypeFieldInfo = EventType
+    type AttrLabel EventExposeTypeFieldInfo = "type"
+    attrGet _ = eventExposeReadType
+    attrSet _ = eventExposeWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventExposeType :: AttrLabelProxy "type"
+eventExposeType = AttrLabelProxy
+
+
+eventExposeReadWindow :: MonadIO m => EventExpose -> m (Maybe Window)
+eventExposeReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventExposeReadSendEvent :: EventExpose -> IO Int8
-eventExposeReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventExposeWriteWindow :: MonadIO m => EventExpose -> Ptr Window -> m ()
+eventExposeWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventExposeClearWindow :: MonadIO m => EventExpose -> m ()
+eventExposeClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventExposeWindowFieldInfo
+instance AttrInfo EventExposeWindowFieldInfo where
+    type AttrAllowedOps EventExposeWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventExposeWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventExposeWindowFieldInfo = (~) EventExpose
+    type AttrGetType EventExposeWindowFieldInfo = Maybe Window
+    type AttrLabel EventExposeWindowFieldInfo = "window"
+    attrGet _ = eventExposeReadWindow
+    attrSet _ = eventExposeWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventExposeClearWindow
+
+eventExposeWindow :: AttrLabelProxy "window"
+eventExposeWindow = AttrLabelProxy
+
+
+eventExposeReadSendEvent :: MonadIO m => EventExpose -> m Int8
+eventExposeReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventExposeReadArea :: EventExpose -> IO Rectangle
-eventExposeReadArea s = withManagedPtr s $ \ptr -> do
+eventExposeWriteSendEvent :: MonadIO m => EventExpose -> Int8 -> m ()
+eventExposeWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventExposeSendEventFieldInfo
+instance AttrInfo EventExposeSendEventFieldInfo where
+    type AttrAllowedOps EventExposeSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventExposeSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventExposeSendEventFieldInfo = (~) EventExpose
+    type AttrGetType EventExposeSendEventFieldInfo = Int8
+    type AttrLabel EventExposeSendEventFieldInfo = "send_event"
+    attrGet _ = eventExposeReadSendEvent
+    attrSet _ = eventExposeWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventExposeSendEvent :: AttrLabelProxy "sendEvent"
+eventExposeSendEvent = AttrLabelProxy
+
+
+eventExposeReadArea :: MonadIO m => EventExpose -> m (Maybe Rectangle)
+eventExposeReadArea s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO (Ptr Rectangle)
-    val' <- (newBoxed Rectangle) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newBoxed Rectangle) val'
+        return val''
+    return result
 
-eventExposeReadRegion :: EventExpose -> IO Cairo.Region
-eventExposeReadRegion s = withManagedPtr s $ \ptr -> do
+eventExposeWriteArea :: MonadIO m => EventExpose -> Ptr Rectangle -> m ()
+eventExposeWriteArea s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Ptr Rectangle)
+
+eventExposeClearArea :: MonadIO m => EventExpose -> m ()
+eventExposeClearArea s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (nullPtr :: Ptr Rectangle)
+
+data EventExposeAreaFieldInfo
+instance AttrInfo EventExposeAreaFieldInfo where
+    type AttrAllowedOps EventExposeAreaFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventExposeAreaFieldInfo = (~) (Ptr Rectangle)
+    type AttrBaseTypeConstraint EventExposeAreaFieldInfo = (~) EventExpose
+    type AttrGetType EventExposeAreaFieldInfo = Maybe Rectangle
+    type AttrLabel EventExposeAreaFieldInfo = "area"
+    attrGet _ = eventExposeReadArea
+    attrSet _ = eventExposeWriteArea
+    attrConstruct = undefined
+    attrClear _ = eventExposeClearArea
+
+eventExposeArea :: AttrLabelProxy "area"
+eventExposeArea = AttrLabelProxy
+
+
+eventExposeReadRegion :: MonadIO m => EventExpose -> m (Maybe Cairo.Region)
+eventExposeReadRegion s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO (Ptr Cairo.Region)
-    val' <- (newBoxed Cairo.Region) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newBoxed Cairo.Region) val'
+        return val''
+    return result
 
-eventExposeReadCount :: EventExpose -> IO Int32
-eventExposeReadCount s = withManagedPtr s $ \ptr -> do
+eventExposeWriteRegion :: MonadIO m => EventExpose -> Ptr Cairo.Region -> m ()
+eventExposeWriteRegion s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (val :: Ptr Cairo.Region)
+
+eventExposeClearRegion :: MonadIO m => EventExpose -> m ()
+eventExposeClearRegion s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (nullPtr :: Ptr Cairo.Region)
+
+data EventExposeRegionFieldInfo
+instance AttrInfo EventExposeRegionFieldInfo where
+    type AttrAllowedOps EventExposeRegionFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventExposeRegionFieldInfo = (~) (Ptr Cairo.Region)
+    type AttrBaseTypeConstraint EventExposeRegionFieldInfo = (~) EventExpose
+    type AttrGetType EventExposeRegionFieldInfo = Maybe Cairo.Region
+    type AttrLabel EventExposeRegionFieldInfo = "region"
+    attrGet _ = eventExposeReadRegion
+    attrSet _ = eventExposeWriteRegion
+    attrConstruct = undefined
+    attrClear _ = eventExposeClearRegion
+
+eventExposeRegion :: AttrLabelProxy "region"
+eventExposeRegion = AttrLabelProxy
+
+
+eventExposeReadCount :: MonadIO m => EventExpose -> m Int32
+eventExposeReadCount s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO Int32
     return val
+
+eventExposeWriteCount :: MonadIO m => EventExpose -> Int32 -> m ()
+eventExposeWriteCount s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (val :: Int32)
+
+data EventExposeCountFieldInfo
+instance AttrInfo EventExposeCountFieldInfo where
+    type AttrAllowedOps EventExposeCountFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventExposeCountFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint EventExposeCountFieldInfo = (~) EventExpose
+    type AttrGetType EventExposeCountFieldInfo = Int32
+    type AttrLabel EventExposeCountFieldInfo = "count"
+    attrGet _ = eventExposeReadCount
+    attrSet _ = eventExposeWriteCount
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventExposeCount :: AttrLabelProxy "count"
+eventExposeCount = AttrLabelProxy
+
+
+
+type instance AttributeList EventExpose = EventExposeAttributeList
+type EventExposeAttributeList = ('[ '("type", EventExposeTypeFieldInfo), '("window", EventExposeWindowFieldInfo), '("sendEvent", EventExposeSendEventFieldInfo), '("area", EventExposeAreaFieldInfo), '("region", EventExposeRegionFieldInfo), '("count", EventExposeCountFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventExposeMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventExposeMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventExpose.hs-boot b/GI/Gdk/Structs/EventExpose.hs-boot
--- a/GI/Gdk/Structs/EventExpose.hs-boot
+++ b/GI/Gdk/Structs/EventExpose.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventExpose where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventFocus.hs b/GI/Gdk/Structs/EventFocus.hs
--- a/GI/Gdk/Structs/EventFocus.hs
+++ b/GI/Gdk/Structs/EventFocus.hs
@@ -19,28 +19,37 @@
 
  -- * Properties
 -- ** In
+    eventFocusIn                            ,
     eventFocusReadIn                        ,
+    eventFocusWriteIn                       ,
 
 
 -- ** SendEvent
     eventFocusReadSendEvent                 ,
+    eventFocusSendEvent                     ,
+    eventFocusWriteSendEvent                ,
 
 
 -- ** Type
     eventFocusReadType                      ,
+    eventFocusType                          ,
+    eventFocusWriteType                     ,
 
 
 -- ** Window
+    eventFocusClearWindow                   ,
     eventFocusReadWindow                    ,
+    eventFocusWindow                        ,
+    eventFocusWriteWindow                   ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -53,30 +62,128 @@
 newZeroEventFocus :: MonadIO m => m EventFocus
 newZeroEventFocus = liftIO $ callocBytes 24 >>= wrapPtr EventFocus
 
+instance tag ~ 'AttrSet => Constructible EventFocus tag where
+    new _ attrs = do
+        o <- newZeroEventFocus
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventFocus :: Maybe EventFocus
 noEventFocus = Nothing
 
-eventFocusReadType :: EventFocus -> IO EventType
-eventFocusReadType s = withManagedPtr s $ \ptr -> do
+eventFocusReadType :: MonadIO m => EventFocus -> m EventType
+eventFocusReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventFocusReadWindow :: EventFocus -> IO Window
-eventFocusReadWindow s = withManagedPtr s $ \ptr -> do
+eventFocusWriteType :: MonadIO m => EventFocus -> EventType -> m ()
+eventFocusWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventFocusTypeFieldInfo
+instance AttrInfo EventFocusTypeFieldInfo where
+    type AttrAllowedOps EventFocusTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventFocusTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventFocusTypeFieldInfo = (~) EventFocus
+    type AttrGetType EventFocusTypeFieldInfo = EventType
+    type AttrLabel EventFocusTypeFieldInfo = "type"
+    attrGet _ = eventFocusReadType
+    attrSet _ = eventFocusWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventFocusType :: AttrLabelProxy "type"
+eventFocusType = AttrLabelProxy
+
+
+eventFocusReadWindow :: MonadIO m => EventFocus -> m (Maybe Window)
+eventFocusReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventFocusReadSendEvent :: EventFocus -> IO Int8
-eventFocusReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventFocusWriteWindow :: MonadIO m => EventFocus -> Ptr Window -> m ()
+eventFocusWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventFocusClearWindow :: MonadIO m => EventFocus -> m ()
+eventFocusClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventFocusWindowFieldInfo
+instance AttrInfo EventFocusWindowFieldInfo where
+    type AttrAllowedOps EventFocusWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventFocusWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventFocusWindowFieldInfo = (~) EventFocus
+    type AttrGetType EventFocusWindowFieldInfo = Maybe Window
+    type AttrLabel EventFocusWindowFieldInfo = "window"
+    attrGet _ = eventFocusReadWindow
+    attrSet _ = eventFocusWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventFocusClearWindow
+
+eventFocusWindow :: AttrLabelProxy "window"
+eventFocusWindow = AttrLabelProxy
+
+
+eventFocusReadSendEvent :: MonadIO m => EventFocus -> m Int8
+eventFocusReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventFocusReadIn :: EventFocus -> IO Int16
-eventFocusReadIn s = withManagedPtr s $ \ptr -> do
+eventFocusWriteSendEvent :: MonadIO m => EventFocus -> Int8 -> m ()
+eventFocusWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventFocusSendEventFieldInfo
+instance AttrInfo EventFocusSendEventFieldInfo where
+    type AttrAllowedOps EventFocusSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventFocusSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventFocusSendEventFieldInfo = (~) EventFocus
+    type AttrGetType EventFocusSendEventFieldInfo = Int8
+    type AttrLabel EventFocusSendEventFieldInfo = "send_event"
+    attrGet _ = eventFocusReadSendEvent
+    attrSet _ = eventFocusWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventFocusSendEvent :: AttrLabelProxy "sendEvent"
+eventFocusSendEvent = AttrLabelProxy
+
+
+eventFocusReadIn :: MonadIO m => EventFocus -> m Int16
+eventFocusReadIn s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 18) :: IO Int16
     return val
+
+eventFocusWriteIn :: MonadIO m => EventFocus -> Int16 -> m ()
+eventFocusWriteIn s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 18) (val :: Int16)
+
+data EventFocusInFieldInfo
+instance AttrInfo EventFocusInFieldInfo where
+    type AttrAllowedOps EventFocusInFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventFocusInFieldInfo = (~) Int16
+    type AttrBaseTypeConstraint EventFocusInFieldInfo = (~) EventFocus
+    type AttrGetType EventFocusInFieldInfo = Int16
+    type AttrLabel EventFocusInFieldInfo = "in"
+    attrGet _ = eventFocusReadIn
+    attrSet _ = eventFocusWriteIn
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventFocusIn :: AttrLabelProxy "in"
+eventFocusIn = AttrLabelProxy
+
+
+
+type instance AttributeList EventFocus = EventFocusAttributeList
+type EventFocusAttributeList = ('[ '("type", EventFocusTypeFieldInfo), '("window", EventFocusWindowFieldInfo), '("sendEvent", EventFocusSendEventFieldInfo), '("in", EventFocusInFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventFocusMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventFocusMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventFocus.hs-boot b/GI/Gdk/Structs/EventFocus.hs-boot
--- a/GI/Gdk/Structs/EventFocus.hs-boot
+++ b/GI/Gdk/Structs/EventFocus.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventFocus where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventGrabBroken.hs b/GI/Gdk/Structs/EventGrabBroken.hs
--- a/GI/Gdk/Structs/EventGrabBroken.hs
+++ b/GI/Gdk/Structs/EventGrabBroken.hs
@@ -23,36 +23,50 @@
 
  -- * Properties
 -- ** GrabWindow
+    eventGrabBrokenClearGrabWindow          ,
+    eventGrabBrokenGrabWindow               ,
     eventGrabBrokenReadGrabWindow           ,
+    eventGrabBrokenWriteGrabWindow          ,
 
 
 -- ** Implicit
+    eventGrabBrokenImplicit                 ,
     eventGrabBrokenReadImplicit             ,
+    eventGrabBrokenWriteImplicit            ,
 
 
 -- ** Keyboard
+    eventGrabBrokenKeyboard                 ,
     eventGrabBrokenReadKeyboard             ,
+    eventGrabBrokenWriteKeyboard            ,
 
 
 -- ** SendEvent
     eventGrabBrokenReadSendEvent            ,
+    eventGrabBrokenSendEvent                ,
+    eventGrabBrokenWriteSendEvent           ,
 
 
 -- ** Type
     eventGrabBrokenReadType                 ,
+    eventGrabBrokenType                     ,
+    eventGrabBrokenWriteType                ,
 
 
 -- ** Window
+    eventGrabBrokenClearWindow              ,
     eventGrabBrokenReadWindow               ,
+    eventGrabBrokenWindow                   ,
+    eventGrabBrokenWriteWindow              ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -65,43 +79,189 @@
 newZeroEventGrabBroken :: MonadIO m => m EventGrabBroken
 newZeroEventGrabBroken = liftIO $ callocBytes 40 >>= wrapPtr EventGrabBroken
 
+instance tag ~ 'AttrSet => Constructible EventGrabBroken tag where
+    new _ attrs = do
+        o <- newZeroEventGrabBroken
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventGrabBroken :: Maybe EventGrabBroken
 noEventGrabBroken = Nothing
 
-eventGrabBrokenReadType :: EventGrabBroken -> IO EventType
-eventGrabBrokenReadType s = withManagedPtr s $ \ptr -> do
+eventGrabBrokenReadType :: MonadIO m => EventGrabBroken -> m EventType
+eventGrabBrokenReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventGrabBrokenReadWindow :: EventGrabBroken -> IO Window
-eventGrabBrokenReadWindow s = withManagedPtr s $ \ptr -> do
+eventGrabBrokenWriteType :: MonadIO m => EventGrabBroken -> EventType -> m ()
+eventGrabBrokenWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventGrabBrokenTypeFieldInfo
+instance AttrInfo EventGrabBrokenTypeFieldInfo where
+    type AttrAllowedOps EventGrabBrokenTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventGrabBrokenTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventGrabBrokenTypeFieldInfo = (~) EventGrabBroken
+    type AttrGetType EventGrabBrokenTypeFieldInfo = EventType
+    type AttrLabel EventGrabBrokenTypeFieldInfo = "type"
+    attrGet _ = eventGrabBrokenReadType
+    attrSet _ = eventGrabBrokenWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventGrabBrokenType :: AttrLabelProxy "type"
+eventGrabBrokenType = AttrLabelProxy
+
+
+eventGrabBrokenReadWindow :: MonadIO m => EventGrabBroken -> m (Maybe Window)
+eventGrabBrokenReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventGrabBrokenReadSendEvent :: EventGrabBroken -> IO Int8
-eventGrabBrokenReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventGrabBrokenWriteWindow :: MonadIO m => EventGrabBroken -> Ptr Window -> m ()
+eventGrabBrokenWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventGrabBrokenClearWindow :: MonadIO m => EventGrabBroken -> m ()
+eventGrabBrokenClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventGrabBrokenWindowFieldInfo
+instance AttrInfo EventGrabBrokenWindowFieldInfo where
+    type AttrAllowedOps EventGrabBrokenWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventGrabBrokenWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventGrabBrokenWindowFieldInfo = (~) EventGrabBroken
+    type AttrGetType EventGrabBrokenWindowFieldInfo = Maybe Window
+    type AttrLabel EventGrabBrokenWindowFieldInfo = "window"
+    attrGet _ = eventGrabBrokenReadWindow
+    attrSet _ = eventGrabBrokenWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventGrabBrokenClearWindow
+
+eventGrabBrokenWindow :: AttrLabelProxy "window"
+eventGrabBrokenWindow = AttrLabelProxy
+
+
+eventGrabBrokenReadSendEvent :: MonadIO m => EventGrabBroken -> m Int8
+eventGrabBrokenReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventGrabBrokenReadKeyboard :: EventGrabBroken -> IO Bool
-eventGrabBrokenReadKeyboard s = withManagedPtr s $ \ptr -> do
+eventGrabBrokenWriteSendEvent :: MonadIO m => EventGrabBroken -> Int8 -> m ()
+eventGrabBrokenWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventGrabBrokenSendEventFieldInfo
+instance AttrInfo EventGrabBrokenSendEventFieldInfo where
+    type AttrAllowedOps EventGrabBrokenSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventGrabBrokenSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventGrabBrokenSendEventFieldInfo = (~) EventGrabBroken
+    type AttrGetType EventGrabBrokenSendEventFieldInfo = Int8
+    type AttrLabel EventGrabBrokenSendEventFieldInfo = "send_event"
+    attrGet _ = eventGrabBrokenReadSendEvent
+    attrSet _ = eventGrabBrokenWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventGrabBrokenSendEvent :: AttrLabelProxy "sendEvent"
+eventGrabBrokenSendEvent = AttrLabelProxy
+
+
+eventGrabBrokenReadKeyboard :: MonadIO m => EventGrabBroken -> m Bool
+eventGrabBrokenReadKeyboard s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO CInt
     let val' = (/= 0) val
     return val'
 
-eventGrabBrokenReadImplicit :: EventGrabBroken -> IO Bool
-eventGrabBrokenReadImplicit s = withManagedPtr s $ \ptr -> do
+eventGrabBrokenWriteKeyboard :: MonadIO m => EventGrabBroken -> Bool -> m ()
+eventGrabBrokenWriteKeyboard s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 20) (val' :: CInt)
+
+data EventGrabBrokenKeyboardFieldInfo
+instance AttrInfo EventGrabBrokenKeyboardFieldInfo where
+    type AttrAllowedOps EventGrabBrokenKeyboardFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventGrabBrokenKeyboardFieldInfo = (~) Bool
+    type AttrBaseTypeConstraint EventGrabBrokenKeyboardFieldInfo = (~) EventGrabBroken
+    type AttrGetType EventGrabBrokenKeyboardFieldInfo = Bool
+    type AttrLabel EventGrabBrokenKeyboardFieldInfo = "keyboard"
+    attrGet _ = eventGrabBrokenReadKeyboard
+    attrSet _ = eventGrabBrokenWriteKeyboard
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventGrabBrokenKeyboard :: AttrLabelProxy "keyboard"
+eventGrabBrokenKeyboard = AttrLabelProxy
+
+
+eventGrabBrokenReadImplicit :: MonadIO m => EventGrabBroken -> m Bool
+eventGrabBrokenReadImplicit s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO CInt
     let val' = (/= 0) val
     return val'
 
-eventGrabBrokenReadGrabWindow :: EventGrabBroken -> IO Window
-eventGrabBrokenReadGrabWindow s = withManagedPtr s $ \ptr -> do
+eventGrabBrokenWriteImplicit :: MonadIO m => EventGrabBroken -> Bool -> m ()
+eventGrabBrokenWriteImplicit s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 24) (val' :: CInt)
+
+data EventGrabBrokenImplicitFieldInfo
+instance AttrInfo EventGrabBrokenImplicitFieldInfo where
+    type AttrAllowedOps EventGrabBrokenImplicitFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventGrabBrokenImplicitFieldInfo = (~) Bool
+    type AttrBaseTypeConstraint EventGrabBrokenImplicitFieldInfo = (~) EventGrabBroken
+    type AttrGetType EventGrabBrokenImplicitFieldInfo = Bool
+    type AttrLabel EventGrabBrokenImplicitFieldInfo = "implicit"
+    attrGet _ = eventGrabBrokenReadImplicit
+    attrSet _ = eventGrabBrokenWriteImplicit
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventGrabBrokenImplicit :: AttrLabelProxy "implicit"
+eventGrabBrokenImplicit = AttrLabelProxy
+
+
+eventGrabBrokenReadGrabWindow :: MonadIO m => EventGrabBroken -> m (Maybe Window)
+eventGrabBrokenReadGrabWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
+
+eventGrabBrokenWriteGrabWindow :: MonadIO m => EventGrabBroken -> Ptr Window -> m ()
+eventGrabBrokenWriteGrabWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Ptr Window)
+
+eventGrabBrokenClearGrabWindow :: MonadIO m => EventGrabBroken -> m ()
+eventGrabBrokenClearGrabWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (nullPtr :: Ptr Window)
+
+data EventGrabBrokenGrabWindowFieldInfo
+instance AttrInfo EventGrabBrokenGrabWindowFieldInfo where
+    type AttrAllowedOps EventGrabBrokenGrabWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventGrabBrokenGrabWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventGrabBrokenGrabWindowFieldInfo = (~) EventGrabBroken
+    type AttrGetType EventGrabBrokenGrabWindowFieldInfo = Maybe Window
+    type AttrLabel EventGrabBrokenGrabWindowFieldInfo = "grab_window"
+    attrGet _ = eventGrabBrokenReadGrabWindow
+    attrSet _ = eventGrabBrokenWriteGrabWindow
+    attrConstruct = undefined
+    attrClear _ = eventGrabBrokenClearGrabWindow
+
+eventGrabBrokenGrabWindow :: AttrLabelProxy "grabWindow"
+eventGrabBrokenGrabWindow = AttrLabelProxy
+
+
+
+type instance AttributeList EventGrabBroken = EventGrabBrokenAttributeList
+type EventGrabBrokenAttributeList = ('[ '("type", EventGrabBrokenTypeFieldInfo), '("window", EventGrabBrokenWindowFieldInfo), '("sendEvent", EventGrabBrokenSendEventFieldInfo), '("keyboard", EventGrabBrokenKeyboardFieldInfo), '("implicit", EventGrabBrokenImplicitFieldInfo), '("grabWindow", EventGrabBrokenGrabWindowFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventGrabBrokenMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventGrabBrokenMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventGrabBroken.hs-boot b/GI/Gdk/Structs/EventGrabBroken.hs-boot
--- a/GI/Gdk/Structs/EventGrabBroken.hs-boot
+++ b/GI/Gdk/Structs/EventGrabBroken.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventGrabBroken where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventKey.hs b/GI/Gdk/Structs/EventKey.hs
--- a/GI/Gdk/Structs/EventKey.hs
+++ b/GI/Gdk/Structs/EventKey.hs
@@ -19,56 +19,80 @@
 
  -- * Properties
 -- ** Group
+    eventKeyGroup                           ,
     eventKeyReadGroup                       ,
+    eventKeyWriteGroup                      ,
 
 
 -- ** HardwareKeycode
+    eventKeyHardwareKeycode                 ,
     eventKeyReadHardwareKeycode             ,
+    eventKeyWriteHardwareKeycode            ,
 
 
 -- ** IsModifier
+    eventKeyIsModifier                      ,
     eventKeyReadIsModifier                  ,
+    eventKeyWriteIsModifier                 ,
 
 
 -- ** Keyval
+    eventKeyKeyval                          ,
     eventKeyReadKeyval                      ,
+    eventKeyWriteKeyval                     ,
 
 
 -- ** Length
+    eventKeyLength                          ,
     eventKeyReadLength                      ,
+    eventKeyWriteLength                     ,
 
 
 -- ** SendEvent
     eventKeyReadSendEvent                   ,
+    eventKeySendEvent                       ,
+    eventKeyWriteSendEvent                  ,
 
 
 -- ** State
     eventKeyReadState                       ,
+    eventKeyState                           ,
+    eventKeyWriteState                      ,
 
 
 -- ** String
+    eventKeyClearString                     ,
     eventKeyReadString                      ,
+    eventKeyString                          ,
+    eventKeyWriteString                     ,
 
 
 -- ** Time
     eventKeyReadTime                        ,
+    eventKeyTime                            ,
+    eventKeyWriteTime                       ,
 
 
 -- ** Type
     eventKeyReadType                        ,
+    eventKeyType                            ,
+    eventKeyWriteType                       ,
 
 
 -- ** Window
+    eventKeyClearWindow                     ,
     eventKeyReadWindow                      ,
+    eventKeyWindow                          ,
+    eventKeyWriteWindow                     ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -81,67 +105,312 @@
 newZeroEventKey :: MonadIO m => m EventKey
 newZeroEventKey = liftIO $ callocBytes 56 >>= wrapPtr EventKey
 
+instance tag ~ 'AttrSet => Constructible EventKey tag where
+    new _ attrs = do
+        o <- newZeroEventKey
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventKey :: Maybe EventKey
 noEventKey = Nothing
 
-eventKeyReadType :: EventKey -> IO EventType
-eventKeyReadType s = withManagedPtr s $ \ptr -> do
+eventKeyReadType :: MonadIO m => EventKey -> m EventType
+eventKeyReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventKeyReadWindow :: EventKey -> IO Window
-eventKeyReadWindow s = withManagedPtr s $ \ptr -> do
+eventKeyWriteType :: MonadIO m => EventKey -> EventType -> m ()
+eventKeyWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventKeyTypeFieldInfo
+instance AttrInfo EventKeyTypeFieldInfo where
+    type AttrAllowedOps EventKeyTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventKeyTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventKeyTypeFieldInfo = (~) EventKey
+    type AttrGetType EventKeyTypeFieldInfo = EventType
+    type AttrLabel EventKeyTypeFieldInfo = "type"
+    attrGet _ = eventKeyReadType
+    attrSet _ = eventKeyWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventKeyType :: AttrLabelProxy "type"
+eventKeyType = AttrLabelProxy
+
+
+eventKeyReadWindow :: MonadIO m => EventKey -> m (Maybe Window)
+eventKeyReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventKeyReadSendEvent :: EventKey -> IO Int8
-eventKeyReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventKeyWriteWindow :: MonadIO m => EventKey -> Ptr Window -> m ()
+eventKeyWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventKeyClearWindow :: MonadIO m => EventKey -> m ()
+eventKeyClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventKeyWindowFieldInfo
+instance AttrInfo EventKeyWindowFieldInfo where
+    type AttrAllowedOps EventKeyWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventKeyWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventKeyWindowFieldInfo = (~) EventKey
+    type AttrGetType EventKeyWindowFieldInfo = Maybe Window
+    type AttrLabel EventKeyWindowFieldInfo = "window"
+    attrGet _ = eventKeyReadWindow
+    attrSet _ = eventKeyWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventKeyClearWindow
+
+eventKeyWindow :: AttrLabelProxy "window"
+eventKeyWindow = AttrLabelProxy
+
+
+eventKeyReadSendEvent :: MonadIO m => EventKey -> m Int8
+eventKeyReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventKeyReadTime :: EventKey -> IO Word32
-eventKeyReadTime s = withManagedPtr s $ \ptr -> do
+eventKeyWriteSendEvent :: MonadIO m => EventKey -> Int8 -> m ()
+eventKeyWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventKeySendEventFieldInfo
+instance AttrInfo EventKeySendEventFieldInfo where
+    type AttrAllowedOps EventKeySendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventKeySendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventKeySendEventFieldInfo = (~) EventKey
+    type AttrGetType EventKeySendEventFieldInfo = Int8
+    type AttrLabel EventKeySendEventFieldInfo = "send_event"
+    attrGet _ = eventKeyReadSendEvent
+    attrSet _ = eventKeyWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventKeySendEvent :: AttrLabelProxy "sendEvent"
+eventKeySendEvent = AttrLabelProxy
+
+
+eventKeyReadTime :: MonadIO m => EventKey -> m Word32
+eventKeyReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Word32
     return val
 
-eventKeyReadState :: EventKey -> IO [ModifierType]
-eventKeyReadState s = withManagedPtr s $ \ptr -> do
+eventKeyWriteTime :: MonadIO m => EventKey -> Word32 -> m ()
+eventKeyWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Word32)
+
+data EventKeyTimeFieldInfo
+instance AttrInfo EventKeyTimeFieldInfo where
+    type AttrAllowedOps EventKeyTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventKeyTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventKeyTimeFieldInfo = (~) EventKey
+    type AttrGetType EventKeyTimeFieldInfo = Word32
+    type AttrLabel EventKeyTimeFieldInfo = "time"
+    attrGet _ = eventKeyReadTime
+    attrSet _ = eventKeyWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventKeyTime :: AttrLabelProxy "time"
+eventKeyTime = AttrLabelProxy
+
+
+eventKeyReadState :: MonadIO m => EventKey -> m [ModifierType]
+eventKeyReadState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO CUInt
     let val' = wordToGFlags val
     return val'
 
-eventKeyReadKeyval :: EventKey -> IO Word32
-eventKeyReadKeyval s = withManagedPtr s $ \ptr -> do
+eventKeyWriteState :: MonadIO m => EventKey -> [ModifierType] -> m ()
+eventKeyWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = gflagsToWord val
+    poke (ptr `plusPtr` 24) (val' :: CUInt)
+
+data EventKeyStateFieldInfo
+instance AttrInfo EventKeyStateFieldInfo where
+    type AttrAllowedOps EventKeyStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventKeyStateFieldInfo = (~) [ModifierType]
+    type AttrBaseTypeConstraint EventKeyStateFieldInfo = (~) EventKey
+    type AttrGetType EventKeyStateFieldInfo = [ModifierType]
+    type AttrLabel EventKeyStateFieldInfo = "state"
+    attrGet _ = eventKeyReadState
+    attrSet _ = eventKeyWriteState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventKeyState :: AttrLabelProxy "state"
+eventKeyState = AttrLabelProxy
+
+
+eventKeyReadKeyval :: MonadIO m => EventKey -> m Word32
+eventKeyReadKeyval s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 28) :: IO Word32
     return val
 
-eventKeyReadLength :: EventKey -> IO Int32
-eventKeyReadLength s = withManagedPtr s $ \ptr -> do
+eventKeyWriteKeyval :: MonadIO m => EventKey -> Word32 -> m ()
+eventKeyWriteKeyval s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 28) (val :: Word32)
+
+data EventKeyKeyvalFieldInfo
+instance AttrInfo EventKeyKeyvalFieldInfo where
+    type AttrAllowedOps EventKeyKeyvalFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventKeyKeyvalFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventKeyKeyvalFieldInfo = (~) EventKey
+    type AttrGetType EventKeyKeyvalFieldInfo = Word32
+    type AttrLabel EventKeyKeyvalFieldInfo = "keyval"
+    attrGet _ = eventKeyReadKeyval
+    attrSet _ = eventKeyWriteKeyval
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventKeyKeyval :: AttrLabelProxy "keyval"
+eventKeyKeyval = AttrLabelProxy
+
+
+eventKeyReadLength :: MonadIO m => EventKey -> m Int32
+eventKeyReadLength s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO Int32
     return val
 
-eventKeyReadString :: EventKey -> IO T.Text
-eventKeyReadString s = withManagedPtr s $ \ptr -> do
+eventKeyWriteLength :: MonadIO m => EventKey -> Int32 -> m ()
+eventKeyWriteLength s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Int32)
+
+data EventKeyLengthFieldInfo
+instance AttrInfo EventKeyLengthFieldInfo where
+    type AttrAllowedOps EventKeyLengthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventKeyLengthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint EventKeyLengthFieldInfo = (~) EventKey
+    type AttrGetType EventKeyLengthFieldInfo = Int32
+    type AttrLabel EventKeyLengthFieldInfo = "length"
+    attrGet _ = eventKeyReadLength
+    attrSet _ = eventKeyWriteLength
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventKeyLength :: AttrLabelProxy "length"
+eventKeyLength = AttrLabelProxy
+
+
+eventKeyReadString :: MonadIO m => EventKey -> m (Maybe T.Text)
+eventKeyReadString s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
 
-eventKeyReadHardwareKeycode :: EventKey -> IO Word16
-eventKeyReadHardwareKeycode s = withManagedPtr s $ \ptr -> do
+eventKeyWriteString :: MonadIO m => EventKey -> CString -> m ()
+eventKeyWriteString s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (val :: CString)
+
+eventKeyClearString :: MonadIO m => EventKey -> m ()
+eventKeyClearString s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (nullPtr :: CString)
+
+data EventKeyStringFieldInfo
+instance AttrInfo EventKeyStringFieldInfo where
+    type AttrAllowedOps EventKeyStringFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventKeyStringFieldInfo = (~) CString
+    type AttrBaseTypeConstraint EventKeyStringFieldInfo = (~) EventKey
+    type AttrGetType EventKeyStringFieldInfo = Maybe T.Text
+    type AttrLabel EventKeyStringFieldInfo = "string"
+    attrGet _ = eventKeyReadString
+    attrSet _ = eventKeyWriteString
+    attrConstruct = undefined
+    attrClear _ = eventKeyClearString
+
+eventKeyString :: AttrLabelProxy "string"
+eventKeyString = AttrLabelProxy
+
+
+eventKeyReadHardwareKeycode :: MonadIO m => EventKey -> m Word16
+eventKeyReadHardwareKeycode s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO Word16
     return val
 
-eventKeyReadGroup :: EventKey -> IO Word8
-eventKeyReadGroup s = withManagedPtr s $ \ptr -> do
+eventKeyWriteHardwareKeycode :: MonadIO m => EventKey -> Word16 -> m ()
+eventKeyWriteHardwareKeycode s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (val :: Word16)
+
+data EventKeyHardwareKeycodeFieldInfo
+instance AttrInfo EventKeyHardwareKeycodeFieldInfo where
+    type AttrAllowedOps EventKeyHardwareKeycodeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventKeyHardwareKeycodeFieldInfo = (~) Word16
+    type AttrBaseTypeConstraint EventKeyHardwareKeycodeFieldInfo = (~) EventKey
+    type AttrGetType EventKeyHardwareKeycodeFieldInfo = Word16
+    type AttrLabel EventKeyHardwareKeycodeFieldInfo = "hardware_keycode"
+    attrGet _ = eventKeyReadHardwareKeycode
+    attrSet _ = eventKeyWriteHardwareKeycode
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventKeyHardwareKeycode :: AttrLabelProxy "hardwareKeycode"
+eventKeyHardwareKeycode = AttrLabelProxy
+
+
+eventKeyReadGroup :: MonadIO m => EventKey -> m Word8
+eventKeyReadGroup s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 50) :: IO Word8
     return val
 
-eventKeyReadIsModifier :: EventKey -> IO Word32
-eventKeyReadIsModifier s = withManagedPtr s $ \ptr -> do
+eventKeyWriteGroup :: MonadIO m => EventKey -> Word8 -> m ()
+eventKeyWriteGroup s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 50) (val :: Word8)
+
+data EventKeyGroupFieldInfo
+instance AttrInfo EventKeyGroupFieldInfo where
+    type AttrAllowedOps EventKeyGroupFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventKeyGroupFieldInfo = (~) Word8
+    type AttrBaseTypeConstraint EventKeyGroupFieldInfo = (~) EventKey
+    type AttrGetType EventKeyGroupFieldInfo = Word8
+    type AttrLabel EventKeyGroupFieldInfo = "group"
+    attrGet _ = eventKeyReadGroup
+    attrSet _ = eventKeyWriteGroup
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventKeyGroup :: AttrLabelProxy "group"
+eventKeyGroup = AttrLabelProxy
+
+
+eventKeyReadIsModifier :: MonadIO m => EventKey -> m Word32
+eventKeyReadIsModifier s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 52) :: IO Word32
     return val
+
+eventKeyWriteIsModifier :: MonadIO m => EventKey -> Word32 -> m ()
+eventKeyWriteIsModifier s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 52) (val :: Word32)
+
+data EventKeyIsModifierFieldInfo
+instance AttrInfo EventKeyIsModifierFieldInfo where
+    type AttrAllowedOps EventKeyIsModifierFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventKeyIsModifierFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventKeyIsModifierFieldInfo = (~) EventKey
+    type AttrGetType EventKeyIsModifierFieldInfo = Word32
+    type AttrLabel EventKeyIsModifierFieldInfo = "is_modifier"
+    attrGet _ = eventKeyReadIsModifier
+    attrSet _ = eventKeyWriteIsModifier
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventKeyIsModifier :: AttrLabelProxy "isModifier"
+eventKeyIsModifier = AttrLabelProxy
+
+
+
+type instance AttributeList EventKey = EventKeyAttributeList
+type EventKeyAttributeList = ('[ '("type", EventKeyTypeFieldInfo), '("window", EventKeyWindowFieldInfo), '("sendEvent", EventKeySendEventFieldInfo), '("time", EventKeyTimeFieldInfo), '("state", EventKeyStateFieldInfo), '("keyval", EventKeyKeyvalFieldInfo), '("length", EventKeyLengthFieldInfo), '("string", EventKeyStringFieldInfo), '("hardwareKeycode", EventKeyHardwareKeycodeFieldInfo), '("group", EventKeyGroupFieldInfo), '("isModifier", EventKeyIsModifierFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventKeyMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventKeyMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventKey.hs-boot b/GI/Gdk/Structs/EventKey.hs-boot
--- a/GI/Gdk/Structs/EventKey.hs-boot
+++ b/GI/Gdk/Structs/EventKey.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventKey where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventMotion.hs b/GI/Gdk/Structs/EventMotion.hs
--- a/GI/Gdk/Structs/EventMotion.hs
+++ b/GI/Gdk/Structs/EventMotion.hs
@@ -19,60 +19,86 @@
 
  -- * Properties
 -- ** Axes
+    eventMotionAxes                         ,
     eventMotionReadAxes                     ,
+    eventMotionWriteAxes                    ,
 
 
 -- ** Device
+    eventMotionClearDevice                  ,
+    eventMotionDevice                       ,
     eventMotionReadDevice                   ,
+    eventMotionWriteDevice                  ,
 
 
 -- ** IsHint
+    eventMotionIsHint                       ,
     eventMotionReadIsHint                   ,
+    eventMotionWriteIsHint                  ,
 
 
 -- ** SendEvent
     eventMotionReadSendEvent                ,
+    eventMotionSendEvent                    ,
+    eventMotionWriteSendEvent               ,
 
 
 -- ** State
     eventMotionReadState                    ,
+    eventMotionState                        ,
+    eventMotionWriteState                   ,
 
 
 -- ** Time
     eventMotionReadTime                     ,
+    eventMotionTime                         ,
+    eventMotionWriteTime                    ,
 
 
 -- ** Type
     eventMotionReadType                     ,
+    eventMotionType                         ,
+    eventMotionWriteType                    ,
 
 
 -- ** Window
+    eventMotionClearWindow                  ,
     eventMotionReadWindow                   ,
+    eventMotionWindow                       ,
+    eventMotionWriteWindow                  ,
 
 
 -- ** X
     eventMotionReadX                        ,
+    eventMotionWriteX                       ,
+    eventMotionX                            ,
 
 
 -- ** XRoot
     eventMotionReadXRoot                    ,
+    eventMotionWriteXRoot                   ,
+    eventMotionXRoot                        ,
 
 
 -- ** Y
     eventMotionReadY                        ,
+    eventMotionWriteY                       ,
+    eventMotionY                            ,
 
 
 -- ** YRoot
     eventMotionReadYRoot                    ,
+    eventMotionWriteYRoot                   ,
+    eventMotionYRoot                        ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -85,77 +111,347 @@
 newZeroEventMotion :: MonadIO m => m EventMotion
 newZeroEventMotion = liftIO $ callocBytes 80 >>= wrapPtr EventMotion
 
+instance tag ~ 'AttrSet => Constructible EventMotion tag where
+    new _ attrs = do
+        o <- newZeroEventMotion
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventMotion :: Maybe EventMotion
 noEventMotion = Nothing
 
-eventMotionReadType :: EventMotion -> IO EventType
-eventMotionReadType s = withManagedPtr s $ \ptr -> do
+eventMotionReadType :: MonadIO m => EventMotion -> m EventType
+eventMotionReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventMotionReadWindow :: EventMotion -> IO Window
-eventMotionReadWindow s = withManagedPtr s $ \ptr -> do
+eventMotionWriteType :: MonadIO m => EventMotion -> EventType -> m ()
+eventMotionWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventMotionTypeFieldInfo
+instance AttrInfo EventMotionTypeFieldInfo where
+    type AttrAllowedOps EventMotionTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventMotionTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventMotionTypeFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionTypeFieldInfo = EventType
+    type AttrLabel EventMotionTypeFieldInfo = "type"
+    attrGet _ = eventMotionReadType
+    attrSet _ = eventMotionWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventMotionType :: AttrLabelProxy "type"
+eventMotionType = AttrLabelProxy
+
+
+eventMotionReadWindow :: MonadIO m => EventMotion -> m (Maybe Window)
+eventMotionReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventMotionReadSendEvent :: EventMotion -> IO Int8
-eventMotionReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventMotionWriteWindow :: MonadIO m => EventMotion -> Ptr Window -> m ()
+eventMotionWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventMotionClearWindow :: MonadIO m => EventMotion -> m ()
+eventMotionClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventMotionWindowFieldInfo
+instance AttrInfo EventMotionWindowFieldInfo where
+    type AttrAllowedOps EventMotionWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventMotionWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventMotionWindowFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionWindowFieldInfo = Maybe Window
+    type AttrLabel EventMotionWindowFieldInfo = "window"
+    attrGet _ = eventMotionReadWindow
+    attrSet _ = eventMotionWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventMotionClearWindow
+
+eventMotionWindow :: AttrLabelProxy "window"
+eventMotionWindow = AttrLabelProxy
+
+
+eventMotionReadSendEvent :: MonadIO m => EventMotion -> m Int8
+eventMotionReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventMotionReadTime :: EventMotion -> IO Word32
-eventMotionReadTime s = withManagedPtr s $ \ptr -> do
+eventMotionWriteSendEvent :: MonadIO m => EventMotion -> Int8 -> m ()
+eventMotionWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventMotionSendEventFieldInfo
+instance AttrInfo EventMotionSendEventFieldInfo where
+    type AttrAllowedOps EventMotionSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventMotionSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventMotionSendEventFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionSendEventFieldInfo = Int8
+    type AttrLabel EventMotionSendEventFieldInfo = "send_event"
+    attrGet _ = eventMotionReadSendEvent
+    attrSet _ = eventMotionWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventMotionSendEvent :: AttrLabelProxy "sendEvent"
+eventMotionSendEvent = AttrLabelProxy
+
+
+eventMotionReadTime :: MonadIO m => EventMotion -> m Word32
+eventMotionReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Word32
     return val
 
-eventMotionReadX :: EventMotion -> IO Double
-eventMotionReadX s = withManagedPtr s $ \ptr -> do
+eventMotionWriteTime :: MonadIO m => EventMotion -> Word32 -> m ()
+eventMotionWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Word32)
+
+data EventMotionTimeFieldInfo
+instance AttrInfo EventMotionTimeFieldInfo where
+    type AttrAllowedOps EventMotionTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventMotionTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventMotionTimeFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionTimeFieldInfo = Word32
+    type AttrLabel EventMotionTimeFieldInfo = "time"
+    attrGet _ = eventMotionReadTime
+    attrSet _ = eventMotionWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventMotionTime :: AttrLabelProxy "time"
+eventMotionTime = AttrLabelProxy
+
+
+eventMotionReadX :: MonadIO m => EventMotion -> m Double
+eventMotionReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventMotionReadY :: EventMotion -> IO Double
-eventMotionReadY s = withManagedPtr s $ \ptr -> do
+eventMotionWriteX :: MonadIO m => EventMotion -> Double -> m ()
+eventMotionWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 24) (val' :: CDouble)
+
+data EventMotionXFieldInfo
+instance AttrInfo EventMotionXFieldInfo where
+    type AttrAllowedOps EventMotionXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventMotionXFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventMotionXFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionXFieldInfo = Double
+    type AttrLabel EventMotionXFieldInfo = "x"
+    attrGet _ = eventMotionReadX
+    attrSet _ = eventMotionWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventMotionX :: AttrLabelProxy "x"
+eventMotionX = AttrLabelProxy
+
+
+eventMotionReadY :: MonadIO m => EventMotion -> m Double
+eventMotionReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventMotionReadAxes :: EventMotion -> IO Double
-eventMotionReadAxes s = withManagedPtr s $ \ptr -> do
+eventMotionWriteY :: MonadIO m => EventMotion -> Double -> m ()
+eventMotionWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 32) (val' :: CDouble)
+
+data EventMotionYFieldInfo
+instance AttrInfo EventMotionYFieldInfo where
+    type AttrAllowedOps EventMotionYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventMotionYFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventMotionYFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionYFieldInfo = Double
+    type AttrLabel EventMotionYFieldInfo = "y"
+    attrGet _ = eventMotionReadY
+    attrSet _ = eventMotionWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventMotionY :: AttrLabelProxy "y"
+eventMotionY = AttrLabelProxy
+
+
+eventMotionReadAxes :: MonadIO m => EventMotion -> m Double
+eventMotionReadAxes s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventMotionReadState :: EventMotion -> IO [ModifierType]
-eventMotionReadState s = withManagedPtr s $ \ptr -> do
+eventMotionWriteAxes :: MonadIO m => EventMotion -> Double -> m ()
+eventMotionWriteAxes s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 40) (val' :: CDouble)
+
+data EventMotionAxesFieldInfo
+instance AttrInfo EventMotionAxesFieldInfo where
+    type AttrAllowedOps EventMotionAxesFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventMotionAxesFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventMotionAxesFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionAxesFieldInfo = Double
+    type AttrLabel EventMotionAxesFieldInfo = "axes"
+    attrGet _ = eventMotionReadAxes
+    attrSet _ = eventMotionWriteAxes
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventMotionAxes :: AttrLabelProxy "axes"
+eventMotionAxes = AttrLabelProxy
+
+
+eventMotionReadState :: MonadIO m => EventMotion -> m [ModifierType]
+eventMotionReadState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO CUInt
     let val' = wordToGFlags val
     return val'
 
-eventMotionReadIsHint :: EventMotion -> IO Int16
-eventMotionReadIsHint s = withManagedPtr s $ \ptr -> do
+eventMotionWriteState :: MonadIO m => EventMotion -> [ModifierType] -> m ()
+eventMotionWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = gflagsToWord val
+    poke (ptr `plusPtr` 48) (val' :: CUInt)
+
+data EventMotionStateFieldInfo
+instance AttrInfo EventMotionStateFieldInfo where
+    type AttrAllowedOps EventMotionStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventMotionStateFieldInfo = (~) [ModifierType]
+    type AttrBaseTypeConstraint EventMotionStateFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionStateFieldInfo = [ModifierType]
+    type AttrLabel EventMotionStateFieldInfo = "state"
+    attrGet _ = eventMotionReadState
+    attrSet _ = eventMotionWriteState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventMotionState :: AttrLabelProxy "state"
+eventMotionState = AttrLabelProxy
+
+
+eventMotionReadIsHint :: MonadIO m => EventMotion -> m Int16
+eventMotionReadIsHint s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 52) :: IO Int16
     return val
 
-eventMotionReadDevice :: EventMotion -> IO Device
-eventMotionReadDevice s = withManagedPtr s $ \ptr -> do
+eventMotionWriteIsHint :: MonadIO m => EventMotion -> Int16 -> m ()
+eventMotionWriteIsHint s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 52) (val :: Int16)
+
+data EventMotionIsHintFieldInfo
+instance AttrInfo EventMotionIsHintFieldInfo where
+    type AttrAllowedOps EventMotionIsHintFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventMotionIsHintFieldInfo = (~) Int16
+    type AttrBaseTypeConstraint EventMotionIsHintFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionIsHintFieldInfo = Int16
+    type AttrLabel EventMotionIsHintFieldInfo = "is_hint"
+    attrGet _ = eventMotionReadIsHint
+    attrSet _ = eventMotionWriteIsHint
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventMotionIsHint :: AttrLabelProxy "isHint"
+eventMotionIsHint = AttrLabelProxy
+
+
+eventMotionReadDevice :: MonadIO m => EventMotion -> m (Maybe Device)
+eventMotionReadDevice s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 56) :: IO (Ptr Device)
-    val' <- (newObject Device) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Device) val'
+        return val''
+    return result
 
-eventMotionReadXRoot :: EventMotion -> IO Double
-eventMotionReadXRoot s = withManagedPtr s $ \ptr -> do
+eventMotionWriteDevice :: MonadIO m => EventMotion -> Ptr Device -> m ()
+eventMotionWriteDevice s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 56) (val :: Ptr Device)
+
+eventMotionClearDevice :: MonadIO m => EventMotion -> m ()
+eventMotionClearDevice s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 56) (nullPtr :: Ptr Device)
+
+data EventMotionDeviceFieldInfo
+instance AttrInfo EventMotionDeviceFieldInfo where
+    type AttrAllowedOps EventMotionDeviceFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventMotionDeviceFieldInfo = (~) (Ptr Device)
+    type AttrBaseTypeConstraint EventMotionDeviceFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionDeviceFieldInfo = Maybe Device
+    type AttrLabel EventMotionDeviceFieldInfo = "device"
+    attrGet _ = eventMotionReadDevice
+    attrSet _ = eventMotionWriteDevice
+    attrConstruct = undefined
+    attrClear _ = eventMotionClearDevice
+
+eventMotionDevice :: AttrLabelProxy "device"
+eventMotionDevice = AttrLabelProxy
+
+
+eventMotionReadXRoot :: MonadIO m => EventMotion -> m Double
+eventMotionReadXRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 64) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventMotionReadYRoot :: EventMotion -> IO Double
-eventMotionReadYRoot s = withManagedPtr s $ \ptr -> do
+eventMotionWriteXRoot :: MonadIO m => EventMotion -> Double -> m ()
+eventMotionWriteXRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 64) (val' :: CDouble)
+
+data EventMotionXRootFieldInfo
+instance AttrInfo EventMotionXRootFieldInfo where
+    type AttrAllowedOps EventMotionXRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventMotionXRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventMotionXRootFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionXRootFieldInfo = Double
+    type AttrLabel EventMotionXRootFieldInfo = "x_root"
+    attrGet _ = eventMotionReadXRoot
+    attrSet _ = eventMotionWriteXRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventMotionXRoot :: AttrLabelProxy "xRoot"
+eventMotionXRoot = AttrLabelProxy
+
+
+eventMotionReadYRoot :: MonadIO m => EventMotion -> m Double
+eventMotionReadYRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 72) :: IO CDouble
     let val' = realToFrac val
     return val'
+
+eventMotionWriteYRoot :: MonadIO m => EventMotion -> Double -> m ()
+eventMotionWriteYRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 72) (val' :: CDouble)
+
+data EventMotionYRootFieldInfo
+instance AttrInfo EventMotionYRootFieldInfo where
+    type AttrAllowedOps EventMotionYRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventMotionYRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventMotionYRootFieldInfo = (~) EventMotion
+    type AttrGetType EventMotionYRootFieldInfo = Double
+    type AttrLabel EventMotionYRootFieldInfo = "y_root"
+    attrGet _ = eventMotionReadYRoot
+    attrSet _ = eventMotionWriteYRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventMotionYRoot :: AttrLabelProxy "yRoot"
+eventMotionYRoot = AttrLabelProxy
+
+
+
+type instance AttributeList EventMotion = EventMotionAttributeList
+type EventMotionAttributeList = ('[ '("type", EventMotionTypeFieldInfo), '("window", EventMotionWindowFieldInfo), '("sendEvent", EventMotionSendEventFieldInfo), '("time", EventMotionTimeFieldInfo), '("x", EventMotionXFieldInfo), '("y", EventMotionYFieldInfo), '("axes", EventMotionAxesFieldInfo), '("state", EventMotionStateFieldInfo), '("isHint", EventMotionIsHintFieldInfo), '("device", EventMotionDeviceFieldInfo), '("xRoot", EventMotionXRootFieldInfo), '("yRoot", EventMotionYRootFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventMotionMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventMotionMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventMotion.hs-boot b/GI/Gdk/Structs/EventMotion.hs-boot
--- a/GI/Gdk/Structs/EventMotion.hs-boot
+++ b/GI/Gdk/Structs/EventMotion.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventMotion where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventOwnerChange.hs b/GI/Gdk/Structs/EventOwnerChange.hs
--- a/GI/Gdk/Structs/EventOwnerChange.hs
+++ b/GI/Gdk/Structs/EventOwnerChange.hs
@@ -21,44 +21,63 @@
 
  -- * Properties
 -- ** Owner
+    eventOwnerChangeClearOwner              ,
+    eventOwnerChangeOwner                   ,
     eventOwnerChangeReadOwner               ,
+    eventOwnerChangeWriteOwner              ,
 
 
 -- ** Reason
     eventOwnerChangeReadReason              ,
+    eventOwnerChangeReason                  ,
+    eventOwnerChangeWriteReason             ,
 
 
 -- ** Selection
+    eventOwnerChangeClearSelection          ,
     eventOwnerChangeReadSelection           ,
+    eventOwnerChangeSelection               ,
+    eventOwnerChangeWriteSelection          ,
 
 
 -- ** SelectionTime
     eventOwnerChangeReadSelectionTime       ,
+    eventOwnerChangeSelectionTime           ,
+    eventOwnerChangeWriteSelectionTime      ,
 
 
 -- ** SendEvent
     eventOwnerChangeReadSendEvent           ,
+    eventOwnerChangeSendEvent               ,
+    eventOwnerChangeWriteSendEvent          ,
 
 
 -- ** Time
     eventOwnerChangeReadTime                ,
+    eventOwnerChangeTime                    ,
+    eventOwnerChangeWriteTime               ,
 
 
 -- ** Type
     eventOwnerChangeReadType                ,
+    eventOwnerChangeType                    ,
+    eventOwnerChangeWriteType               ,
 
 
 -- ** Window
+    eventOwnerChangeClearWindow             ,
     eventOwnerChangeReadWindow              ,
+    eventOwnerChangeWindow                  ,
+    eventOwnerChangeWriteWindow             ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -71,54 +90,245 @@
 newZeroEventOwnerChange :: MonadIO m => m EventOwnerChange
 newZeroEventOwnerChange = liftIO $ callocBytes 56 >>= wrapPtr EventOwnerChange
 
+instance tag ~ 'AttrSet => Constructible EventOwnerChange tag where
+    new _ attrs = do
+        o <- newZeroEventOwnerChange
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventOwnerChange :: Maybe EventOwnerChange
 noEventOwnerChange = Nothing
 
-eventOwnerChangeReadType :: EventOwnerChange -> IO EventType
-eventOwnerChangeReadType s = withManagedPtr s $ \ptr -> do
+eventOwnerChangeReadType :: MonadIO m => EventOwnerChange -> m EventType
+eventOwnerChangeReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventOwnerChangeReadWindow :: EventOwnerChange -> IO Window
-eventOwnerChangeReadWindow s = withManagedPtr s $ \ptr -> do
+eventOwnerChangeWriteType :: MonadIO m => EventOwnerChange -> EventType -> m ()
+eventOwnerChangeWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventOwnerChangeTypeFieldInfo
+instance AttrInfo EventOwnerChangeTypeFieldInfo where
+    type AttrAllowedOps EventOwnerChangeTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventOwnerChangeTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventOwnerChangeTypeFieldInfo = (~) EventOwnerChange
+    type AttrGetType EventOwnerChangeTypeFieldInfo = EventType
+    type AttrLabel EventOwnerChangeTypeFieldInfo = "type"
+    attrGet _ = eventOwnerChangeReadType
+    attrSet _ = eventOwnerChangeWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventOwnerChangeType :: AttrLabelProxy "type"
+eventOwnerChangeType = AttrLabelProxy
+
+
+eventOwnerChangeReadWindow :: MonadIO m => EventOwnerChange -> m (Maybe Window)
+eventOwnerChangeReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventOwnerChangeReadSendEvent :: EventOwnerChange -> IO Int8
-eventOwnerChangeReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventOwnerChangeWriteWindow :: MonadIO m => EventOwnerChange -> Ptr Window -> m ()
+eventOwnerChangeWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventOwnerChangeClearWindow :: MonadIO m => EventOwnerChange -> m ()
+eventOwnerChangeClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventOwnerChangeWindowFieldInfo
+instance AttrInfo EventOwnerChangeWindowFieldInfo where
+    type AttrAllowedOps EventOwnerChangeWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventOwnerChangeWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventOwnerChangeWindowFieldInfo = (~) EventOwnerChange
+    type AttrGetType EventOwnerChangeWindowFieldInfo = Maybe Window
+    type AttrLabel EventOwnerChangeWindowFieldInfo = "window"
+    attrGet _ = eventOwnerChangeReadWindow
+    attrSet _ = eventOwnerChangeWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventOwnerChangeClearWindow
+
+eventOwnerChangeWindow :: AttrLabelProxy "window"
+eventOwnerChangeWindow = AttrLabelProxy
+
+
+eventOwnerChangeReadSendEvent :: MonadIO m => EventOwnerChange -> m Int8
+eventOwnerChangeReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventOwnerChangeReadOwner :: EventOwnerChange -> IO Window
-eventOwnerChangeReadOwner s = withManagedPtr s $ \ptr -> do
+eventOwnerChangeWriteSendEvent :: MonadIO m => EventOwnerChange -> Int8 -> m ()
+eventOwnerChangeWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventOwnerChangeSendEventFieldInfo
+instance AttrInfo EventOwnerChangeSendEventFieldInfo where
+    type AttrAllowedOps EventOwnerChangeSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventOwnerChangeSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventOwnerChangeSendEventFieldInfo = (~) EventOwnerChange
+    type AttrGetType EventOwnerChangeSendEventFieldInfo = Int8
+    type AttrLabel EventOwnerChangeSendEventFieldInfo = "send_event"
+    attrGet _ = eventOwnerChangeReadSendEvent
+    attrSet _ = eventOwnerChangeWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventOwnerChangeSendEvent :: AttrLabelProxy "sendEvent"
+eventOwnerChangeSendEvent = AttrLabelProxy
+
+
+eventOwnerChangeReadOwner :: MonadIO m => EventOwnerChange -> m (Maybe Window)
+eventOwnerChangeReadOwner s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventOwnerChangeReadReason :: EventOwnerChange -> IO OwnerChange
-eventOwnerChangeReadReason s = withManagedPtr s $ \ptr -> do
+eventOwnerChangeWriteOwner :: MonadIO m => EventOwnerChange -> Ptr Window -> m ()
+eventOwnerChangeWriteOwner s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Ptr Window)
+
+eventOwnerChangeClearOwner :: MonadIO m => EventOwnerChange -> m ()
+eventOwnerChangeClearOwner s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (nullPtr :: Ptr Window)
+
+data EventOwnerChangeOwnerFieldInfo
+instance AttrInfo EventOwnerChangeOwnerFieldInfo where
+    type AttrAllowedOps EventOwnerChangeOwnerFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventOwnerChangeOwnerFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventOwnerChangeOwnerFieldInfo = (~) EventOwnerChange
+    type AttrGetType EventOwnerChangeOwnerFieldInfo = Maybe Window
+    type AttrLabel EventOwnerChangeOwnerFieldInfo = "owner"
+    attrGet _ = eventOwnerChangeReadOwner
+    attrSet _ = eventOwnerChangeWriteOwner
+    attrConstruct = undefined
+    attrClear _ = eventOwnerChangeClearOwner
+
+eventOwnerChangeOwner :: AttrLabelProxy "owner"
+eventOwnerChangeOwner = AttrLabelProxy
+
+
+eventOwnerChangeReadReason :: MonadIO m => EventOwnerChange -> m OwnerChange
+eventOwnerChangeReadReason s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventOwnerChangeReadSelection :: EventOwnerChange -> IO Atom
-eventOwnerChangeReadSelection s = withManagedPtr s $ \ptr -> do
+eventOwnerChangeWriteReason :: MonadIO m => EventOwnerChange -> OwnerChange -> m ()
+eventOwnerChangeWriteReason s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 32) (val' :: CUInt)
+
+data EventOwnerChangeReasonFieldInfo
+instance AttrInfo EventOwnerChangeReasonFieldInfo where
+    type AttrAllowedOps EventOwnerChangeReasonFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventOwnerChangeReasonFieldInfo = (~) OwnerChange
+    type AttrBaseTypeConstraint EventOwnerChangeReasonFieldInfo = (~) EventOwnerChange
+    type AttrGetType EventOwnerChangeReasonFieldInfo = OwnerChange
+    type AttrLabel EventOwnerChangeReasonFieldInfo = "reason"
+    attrGet _ = eventOwnerChangeReadReason
+    attrSet _ = eventOwnerChangeWriteReason
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventOwnerChangeReason :: AttrLabelProxy "reason"
+eventOwnerChangeReason = AttrLabelProxy
+
+
+eventOwnerChangeReadSelection :: MonadIO m => EventOwnerChange -> m (Maybe Atom)
+eventOwnerChangeReadSelection s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO (Ptr Atom)
-    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
-    val' <- (\x -> Atom <$> newForeignPtr_ x) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        -- XXX Wrapping a foreign struct/union with no known destructor, leak?
+        val'' <- (\x -> Atom <$> newForeignPtr_ x) val'
+        return val''
+    return result
 
-eventOwnerChangeReadTime :: EventOwnerChange -> IO Word32
-eventOwnerChangeReadTime s = withManagedPtr s $ \ptr -> do
+eventOwnerChangeWriteSelection :: MonadIO m => EventOwnerChange -> Ptr Atom -> m ()
+eventOwnerChangeWriteSelection s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (val :: Ptr Atom)
+
+eventOwnerChangeClearSelection :: MonadIO m => EventOwnerChange -> m ()
+eventOwnerChangeClearSelection s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (nullPtr :: Ptr Atom)
+
+data EventOwnerChangeSelectionFieldInfo
+instance AttrInfo EventOwnerChangeSelectionFieldInfo where
+    type AttrAllowedOps EventOwnerChangeSelectionFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventOwnerChangeSelectionFieldInfo = (~) (Ptr Atom)
+    type AttrBaseTypeConstraint EventOwnerChangeSelectionFieldInfo = (~) EventOwnerChange
+    type AttrGetType EventOwnerChangeSelectionFieldInfo = Maybe Atom
+    type AttrLabel EventOwnerChangeSelectionFieldInfo = "selection"
+    attrGet _ = eventOwnerChangeReadSelection
+    attrSet _ = eventOwnerChangeWriteSelection
+    attrConstruct = undefined
+    attrClear _ = eventOwnerChangeClearSelection
+
+eventOwnerChangeSelection :: AttrLabelProxy "selection"
+eventOwnerChangeSelection = AttrLabelProxy
+
+
+eventOwnerChangeReadTime :: MonadIO m => EventOwnerChange -> m Word32
+eventOwnerChangeReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO Word32
     return val
 
-eventOwnerChangeReadSelectionTime :: EventOwnerChange -> IO Word32
-eventOwnerChangeReadSelectionTime s = withManagedPtr s $ \ptr -> do
+eventOwnerChangeWriteTime :: MonadIO m => EventOwnerChange -> Word32 -> m ()
+eventOwnerChangeWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (val :: Word32)
+
+data EventOwnerChangeTimeFieldInfo
+instance AttrInfo EventOwnerChangeTimeFieldInfo where
+    type AttrAllowedOps EventOwnerChangeTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventOwnerChangeTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventOwnerChangeTimeFieldInfo = (~) EventOwnerChange
+    type AttrGetType EventOwnerChangeTimeFieldInfo = Word32
+    type AttrLabel EventOwnerChangeTimeFieldInfo = "time"
+    attrGet _ = eventOwnerChangeReadTime
+    attrSet _ = eventOwnerChangeWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventOwnerChangeTime :: AttrLabelProxy "time"
+eventOwnerChangeTime = AttrLabelProxy
+
+
+eventOwnerChangeReadSelectionTime :: MonadIO m => EventOwnerChange -> m Word32
+eventOwnerChangeReadSelectionTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 52) :: IO Word32
     return val
+
+eventOwnerChangeWriteSelectionTime :: MonadIO m => EventOwnerChange -> Word32 -> m ()
+eventOwnerChangeWriteSelectionTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 52) (val :: Word32)
+
+data EventOwnerChangeSelectionTimeFieldInfo
+instance AttrInfo EventOwnerChangeSelectionTimeFieldInfo where
+    type AttrAllowedOps EventOwnerChangeSelectionTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventOwnerChangeSelectionTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventOwnerChangeSelectionTimeFieldInfo = (~) EventOwnerChange
+    type AttrGetType EventOwnerChangeSelectionTimeFieldInfo = Word32
+    type AttrLabel EventOwnerChangeSelectionTimeFieldInfo = "selection_time"
+    attrGet _ = eventOwnerChangeReadSelectionTime
+    attrSet _ = eventOwnerChangeWriteSelectionTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventOwnerChangeSelectionTime :: AttrLabelProxy "selectionTime"
+eventOwnerChangeSelectionTime = AttrLabelProxy
+
+
+
+type instance AttributeList EventOwnerChange = EventOwnerChangeAttributeList
+type EventOwnerChangeAttributeList = ('[ '("type", EventOwnerChangeTypeFieldInfo), '("window", EventOwnerChangeWindowFieldInfo), '("sendEvent", EventOwnerChangeSendEventFieldInfo), '("owner", EventOwnerChangeOwnerFieldInfo), '("reason", EventOwnerChangeReasonFieldInfo), '("selection", EventOwnerChangeSelectionFieldInfo), '("time", EventOwnerChangeTimeFieldInfo), '("selectionTime", EventOwnerChangeSelectionTimeFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventOwnerChangeMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventOwnerChangeMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventOwnerChange.hs-boot b/GI/Gdk/Structs/EventOwnerChange.hs-boot
--- a/GI/Gdk/Structs/EventOwnerChange.hs-boot
+++ b/GI/Gdk/Structs/EventOwnerChange.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventOwnerChange where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventProperty.hs b/GI/Gdk/Structs/EventProperty.hs
--- a/GI/Gdk/Structs/EventProperty.hs
+++ b/GI/Gdk/Structs/EventProperty.hs
@@ -19,36 +19,50 @@
 
  -- * Properties
 -- ** Atom
+    eventPropertyAtom                       ,
+    eventPropertyClearAtom                  ,
     eventPropertyReadAtom                   ,
+    eventPropertyWriteAtom                  ,
 
 
 -- ** SendEvent
     eventPropertyReadSendEvent              ,
+    eventPropertySendEvent                  ,
+    eventPropertyWriteSendEvent             ,
 
 
 -- ** State
     eventPropertyReadState                  ,
+    eventPropertyState                      ,
+    eventPropertyWriteState                 ,
 
 
 -- ** Time
     eventPropertyReadTime                   ,
+    eventPropertyTime                       ,
+    eventPropertyWriteTime                  ,
 
 
 -- ** Type
     eventPropertyReadType                   ,
+    eventPropertyType                       ,
+    eventPropertyWriteType                  ,
 
 
 -- ** Window
+    eventPropertyClearWindow                ,
     eventPropertyReadWindow                 ,
+    eventPropertyWindow                     ,
+    eventPropertyWriteWindow                ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -61,43 +75,188 @@
 newZeroEventProperty :: MonadIO m => m EventProperty
 newZeroEventProperty = liftIO $ callocBytes 40 >>= wrapPtr EventProperty
 
+instance tag ~ 'AttrSet => Constructible EventProperty tag where
+    new _ attrs = do
+        o <- newZeroEventProperty
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventProperty :: Maybe EventProperty
 noEventProperty = Nothing
 
-eventPropertyReadType :: EventProperty -> IO EventType
-eventPropertyReadType s = withManagedPtr s $ \ptr -> do
+eventPropertyReadType :: MonadIO m => EventProperty -> m EventType
+eventPropertyReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventPropertyReadWindow :: EventProperty -> IO Window
-eventPropertyReadWindow s = withManagedPtr s $ \ptr -> do
+eventPropertyWriteType :: MonadIO m => EventProperty -> EventType -> m ()
+eventPropertyWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventPropertyTypeFieldInfo
+instance AttrInfo EventPropertyTypeFieldInfo where
+    type AttrAllowedOps EventPropertyTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventPropertyTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventPropertyTypeFieldInfo = (~) EventProperty
+    type AttrGetType EventPropertyTypeFieldInfo = EventType
+    type AttrLabel EventPropertyTypeFieldInfo = "type"
+    attrGet _ = eventPropertyReadType
+    attrSet _ = eventPropertyWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventPropertyType :: AttrLabelProxy "type"
+eventPropertyType = AttrLabelProxy
+
+
+eventPropertyReadWindow :: MonadIO m => EventProperty -> m (Maybe Window)
+eventPropertyReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventPropertyReadSendEvent :: EventProperty -> IO Int8
-eventPropertyReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventPropertyWriteWindow :: MonadIO m => EventProperty -> Ptr Window -> m ()
+eventPropertyWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventPropertyClearWindow :: MonadIO m => EventProperty -> m ()
+eventPropertyClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventPropertyWindowFieldInfo
+instance AttrInfo EventPropertyWindowFieldInfo where
+    type AttrAllowedOps EventPropertyWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventPropertyWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventPropertyWindowFieldInfo = (~) EventProperty
+    type AttrGetType EventPropertyWindowFieldInfo = Maybe Window
+    type AttrLabel EventPropertyWindowFieldInfo = "window"
+    attrGet _ = eventPropertyReadWindow
+    attrSet _ = eventPropertyWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventPropertyClearWindow
+
+eventPropertyWindow :: AttrLabelProxy "window"
+eventPropertyWindow = AttrLabelProxy
+
+
+eventPropertyReadSendEvent :: MonadIO m => EventProperty -> m Int8
+eventPropertyReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventPropertyReadAtom :: EventProperty -> IO Atom
-eventPropertyReadAtom s = withManagedPtr s $ \ptr -> do
+eventPropertyWriteSendEvent :: MonadIO m => EventProperty -> Int8 -> m ()
+eventPropertyWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventPropertySendEventFieldInfo
+instance AttrInfo EventPropertySendEventFieldInfo where
+    type AttrAllowedOps EventPropertySendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventPropertySendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventPropertySendEventFieldInfo = (~) EventProperty
+    type AttrGetType EventPropertySendEventFieldInfo = Int8
+    type AttrLabel EventPropertySendEventFieldInfo = "send_event"
+    attrGet _ = eventPropertyReadSendEvent
+    attrSet _ = eventPropertyWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventPropertySendEvent :: AttrLabelProxy "sendEvent"
+eventPropertySendEvent = AttrLabelProxy
+
+
+eventPropertyReadAtom :: MonadIO m => EventProperty -> m (Maybe Atom)
+eventPropertyReadAtom s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO (Ptr Atom)
-    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
-    val' <- (\x -> Atom <$> newForeignPtr_ x) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        -- XXX Wrapping a foreign struct/union with no known destructor, leak?
+        val'' <- (\x -> Atom <$> newForeignPtr_ x) val'
+        return val''
+    return result
 
-eventPropertyReadTime :: EventProperty -> IO Word32
-eventPropertyReadTime s = withManagedPtr s $ \ptr -> do
+eventPropertyWriteAtom :: MonadIO m => EventProperty -> Ptr Atom -> m ()
+eventPropertyWriteAtom s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Ptr Atom)
+
+eventPropertyClearAtom :: MonadIO m => EventProperty -> m ()
+eventPropertyClearAtom s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (nullPtr :: Ptr Atom)
+
+data EventPropertyAtomFieldInfo
+instance AttrInfo EventPropertyAtomFieldInfo where
+    type AttrAllowedOps EventPropertyAtomFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventPropertyAtomFieldInfo = (~) (Ptr Atom)
+    type AttrBaseTypeConstraint EventPropertyAtomFieldInfo = (~) EventProperty
+    type AttrGetType EventPropertyAtomFieldInfo = Maybe Atom
+    type AttrLabel EventPropertyAtomFieldInfo = "atom"
+    attrGet _ = eventPropertyReadAtom
+    attrSet _ = eventPropertyWriteAtom
+    attrConstruct = undefined
+    attrClear _ = eventPropertyClearAtom
+
+eventPropertyAtom :: AttrLabelProxy "atom"
+eventPropertyAtom = AttrLabelProxy
+
+
+eventPropertyReadTime :: MonadIO m => EventProperty -> m Word32
+eventPropertyReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO Word32
     return val
 
-eventPropertyReadState :: EventProperty -> IO PropertyState
-eventPropertyReadState s = withManagedPtr s $ \ptr -> do
+eventPropertyWriteTime :: MonadIO m => EventProperty -> Word32 -> m ()
+eventPropertyWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Word32)
+
+data EventPropertyTimeFieldInfo
+instance AttrInfo EventPropertyTimeFieldInfo where
+    type AttrAllowedOps EventPropertyTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventPropertyTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventPropertyTimeFieldInfo = (~) EventProperty
+    type AttrGetType EventPropertyTimeFieldInfo = Word32
+    type AttrLabel EventPropertyTimeFieldInfo = "time"
+    attrGet _ = eventPropertyReadTime
+    attrSet _ = eventPropertyWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventPropertyTime :: AttrLabelProxy "time"
+eventPropertyTime = AttrLabelProxy
+
+
+eventPropertyReadState :: MonadIO m => EventProperty -> m PropertyState
+eventPropertyReadState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 36) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
+
+eventPropertyWriteState :: MonadIO m => EventProperty -> PropertyState -> m ()
+eventPropertyWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 36) (val' :: CUInt)
+
+data EventPropertyStateFieldInfo
+instance AttrInfo EventPropertyStateFieldInfo where
+    type AttrAllowedOps EventPropertyStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventPropertyStateFieldInfo = (~) PropertyState
+    type AttrBaseTypeConstraint EventPropertyStateFieldInfo = (~) EventProperty
+    type AttrGetType EventPropertyStateFieldInfo = PropertyState
+    type AttrLabel EventPropertyStateFieldInfo = "state"
+    attrGet _ = eventPropertyReadState
+    attrSet _ = eventPropertyWriteState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventPropertyState :: AttrLabelProxy "state"
+eventPropertyState = AttrLabelProxy
+
+
+
+type instance AttributeList EventProperty = EventPropertyAttributeList
+type EventPropertyAttributeList = ('[ '("type", EventPropertyTypeFieldInfo), '("window", EventPropertyWindowFieldInfo), '("sendEvent", EventPropertySendEventFieldInfo), '("atom", EventPropertyAtomFieldInfo), '("time", EventPropertyTimeFieldInfo), '("state", EventPropertyStateFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventPropertyMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventPropertyMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventProperty.hs-boot b/GI/Gdk/Structs/EventProperty.hs-boot
--- a/GI/Gdk/Structs/EventProperty.hs-boot
+++ b/GI/Gdk/Structs/EventProperty.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventProperty where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventProximity.hs b/GI/Gdk/Structs/EventProximity.hs
--- a/GI/Gdk/Structs/EventProximity.hs
+++ b/GI/Gdk/Structs/EventProximity.hs
@@ -27,32 +27,44 @@
 
  -- * Properties
 -- ** Device
+    eventProximityClearDevice               ,
+    eventProximityDevice                    ,
     eventProximityReadDevice                ,
+    eventProximityWriteDevice               ,
 
 
 -- ** SendEvent
     eventProximityReadSendEvent             ,
+    eventProximitySendEvent                 ,
+    eventProximityWriteSendEvent            ,
 
 
 -- ** Time
     eventProximityReadTime                  ,
+    eventProximityTime                      ,
+    eventProximityWriteTime                 ,
 
 
 -- ** Type
     eventProximityReadType                  ,
+    eventProximityType                      ,
+    eventProximityWriteType                 ,
 
 
 -- ** Window
+    eventProximityClearWindow               ,
     eventProximityReadWindow                ,
+    eventProximityWindow                    ,
+    eventProximityWriteWindow               ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -65,36 +77,160 @@
 newZeroEventProximity :: MonadIO m => m EventProximity
 newZeroEventProximity = liftIO $ callocBytes 32 >>= wrapPtr EventProximity
 
+instance tag ~ 'AttrSet => Constructible EventProximity tag where
+    new _ attrs = do
+        o <- newZeroEventProximity
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventProximity :: Maybe EventProximity
 noEventProximity = Nothing
 
-eventProximityReadType :: EventProximity -> IO EventType
-eventProximityReadType s = withManagedPtr s $ \ptr -> do
+eventProximityReadType :: MonadIO m => EventProximity -> m EventType
+eventProximityReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventProximityReadWindow :: EventProximity -> IO Window
-eventProximityReadWindow s = withManagedPtr s $ \ptr -> do
+eventProximityWriteType :: MonadIO m => EventProximity -> EventType -> m ()
+eventProximityWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventProximityTypeFieldInfo
+instance AttrInfo EventProximityTypeFieldInfo where
+    type AttrAllowedOps EventProximityTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventProximityTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventProximityTypeFieldInfo = (~) EventProximity
+    type AttrGetType EventProximityTypeFieldInfo = EventType
+    type AttrLabel EventProximityTypeFieldInfo = "type"
+    attrGet _ = eventProximityReadType
+    attrSet _ = eventProximityWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventProximityType :: AttrLabelProxy "type"
+eventProximityType = AttrLabelProxy
+
+
+eventProximityReadWindow :: MonadIO m => EventProximity -> m (Maybe Window)
+eventProximityReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventProximityReadSendEvent :: EventProximity -> IO Int8
-eventProximityReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventProximityWriteWindow :: MonadIO m => EventProximity -> Ptr Window -> m ()
+eventProximityWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventProximityClearWindow :: MonadIO m => EventProximity -> m ()
+eventProximityClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventProximityWindowFieldInfo
+instance AttrInfo EventProximityWindowFieldInfo where
+    type AttrAllowedOps EventProximityWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventProximityWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventProximityWindowFieldInfo = (~) EventProximity
+    type AttrGetType EventProximityWindowFieldInfo = Maybe Window
+    type AttrLabel EventProximityWindowFieldInfo = "window"
+    attrGet _ = eventProximityReadWindow
+    attrSet _ = eventProximityWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventProximityClearWindow
+
+eventProximityWindow :: AttrLabelProxy "window"
+eventProximityWindow = AttrLabelProxy
+
+
+eventProximityReadSendEvent :: MonadIO m => EventProximity -> m Int8
+eventProximityReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventProximityReadTime :: EventProximity -> IO Word32
-eventProximityReadTime s = withManagedPtr s $ \ptr -> do
+eventProximityWriteSendEvent :: MonadIO m => EventProximity -> Int8 -> m ()
+eventProximityWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventProximitySendEventFieldInfo
+instance AttrInfo EventProximitySendEventFieldInfo where
+    type AttrAllowedOps EventProximitySendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventProximitySendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventProximitySendEventFieldInfo = (~) EventProximity
+    type AttrGetType EventProximitySendEventFieldInfo = Int8
+    type AttrLabel EventProximitySendEventFieldInfo = "send_event"
+    attrGet _ = eventProximityReadSendEvent
+    attrSet _ = eventProximityWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventProximitySendEvent :: AttrLabelProxy "sendEvent"
+eventProximitySendEvent = AttrLabelProxy
+
+
+eventProximityReadTime :: MonadIO m => EventProximity -> m Word32
+eventProximityReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Word32
     return val
 
-eventProximityReadDevice :: EventProximity -> IO Device
-eventProximityReadDevice s = withManagedPtr s $ \ptr -> do
+eventProximityWriteTime :: MonadIO m => EventProximity -> Word32 -> m ()
+eventProximityWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Word32)
+
+data EventProximityTimeFieldInfo
+instance AttrInfo EventProximityTimeFieldInfo where
+    type AttrAllowedOps EventProximityTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventProximityTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventProximityTimeFieldInfo = (~) EventProximity
+    type AttrGetType EventProximityTimeFieldInfo = Word32
+    type AttrLabel EventProximityTimeFieldInfo = "time"
+    attrGet _ = eventProximityReadTime
+    attrSet _ = eventProximityWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventProximityTime :: AttrLabelProxy "time"
+eventProximityTime = AttrLabelProxy
+
+
+eventProximityReadDevice :: MonadIO m => EventProximity -> m (Maybe Device)
+eventProximityReadDevice s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO (Ptr Device)
-    val' <- (newObject Device) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Device) val'
+        return val''
+    return result
+
+eventProximityWriteDevice :: MonadIO m => EventProximity -> Ptr Device -> m ()
+eventProximityWriteDevice s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Ptr Device)
+
+eventProximityClearDevice :: MonadIO m => EventProximity -> m ()
+eventProximityClearDevice s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (nullPtr :: Ptr Device)
+
+data EventProximityDeviceFieldInfo
+instance AttrInfo EventProximityDeviceFieldInfo where
+    type AttrAllowedOps EventProximityDeviceFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventProximityDeviceFieldInfo = (~) (Ptr Device)
+    type AttrBaseTypeConstraint EventProximityDeviceFieldInfo = (~) EventProximity
+    type AttrGetType EventProximityDeviceFieldInfo = Maybe Device
+    type AttrLabel EventProximityDeviceFieldInfo = "device"
+    attrGet _ = eventProximityReadDevice
+    attrSet _ = eventProximityWriteDevice
+    attrConstruct = undefined
+    attrClear _ = eventProximityClearDevice
+
+eventProximityDevice :: AttrLabelProxy "device"
+eventProximityDevice = AttrLabelProxy
+
+
+
+type instance AttributeList EventProximity = EventProximityAttributeList
+type EventProximityAttributeList = ('[ '("type", EventProximityTypeFieldInfo), '("window", EventProximityWindowFieldInfo), '("sendEvent", EventProximitySendEventFieldInfo), '("time", EventProximityTimeFieldInfo), '("device", EventProximityDeviceFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventProximityMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventProximityMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventProximity.hs-boot b/GI/Gdk/Structs/EventProximity.hs-boot
--- a/GI/Gdk/Structs/EventProximity.hs-boot
+++ b/GI/Gdk/Structs/EventProximity.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventProximity where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventScroll.hs b/GI/Gdk/Structs/EventScroll.hs
--- a/GI/Gdk/Structs/EventScroll.hs
+++ b/GI/Gdk/Structs/EventScroll.hs
@@ -26,64 +26,92 @@
 
  -- * Properties
 -- ** DeltaX
+    eventScrollDeltaX                       ,
     eventScrollReadDeltaX                   ,
+    eventScrollWriteDeltaX                  ,
 
 
 -- ** DeltaY
+    eventScrollDeltaY                       ,
     eventScrollReadDeltaY                   ,
+    eventScrollWriteDeltaY                  ,
 
 
 -- ** Device
+    eventScrollClearDevice                  ,
+    eventScrollDevice                       ,
     eventScrollReadDevice                   ,
+    eventScrollWriteDevice                  ,
 
 
 -- ** Direction
+    eventScrollDirection                    ,
     eventScrollReadDirection                ,
+    eventScrollWriteDirection               ,
 
 
 -- ** SendEvent
     eventScrollReadSendEvent                ,
+    eventScrollSendEvent                    ,
+    eventScrollWriteSendEvent               ,
 
 
 -- ** State
     eventScrollReadState                    ,
+    eventScrollState                        ,
+    eventScrollWriteState                   ,
 
 
 -- ** Time
     eventScrollReadTime                     ,
+    eventScrollTime                         ,
+    eventScrollWriteTime                    ,
 
 
 -- ** Type
     eventScrollReadType                     ,
+    eventScrollType                         ,
+    eventScrollWriteType                    ,
 
 
 -- ** Window
+    eventScrollClearWindow                  ,
     eventScrollReadWindow                   ,
+    eventScrollWindow                       ,
+    eventScrollWriteWindow                  ,
 
 
 -- ** X
     eventScrollReadX                        ,
+    eventScrollWriteX                       ,
+    eventScrollX                            ,
 
 
 -- ** XRoot
     eventScrollReadXRoot                    ,
+    eventScrollWriteXRoot                   ,
+    eventScrollXRoot                        ,
 
 
 -- ** Y
     eventScrollReadY                        ,
+    eventScrollWriteY                       ,
+    eventScrollY                            ,
 
 
 -- ** YRoot
     eventScrollReadYRoot                    ,
+    eventScrollWriteYRoot                   ,
+    eventScrollYRoot                        ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -96,84 +124,376 @@
 newZeroEventScroll :: MonadIO m => m EventScroll
 newZeroEventScroll = liftIO $ callocBytes 88 >>= wrapPtr EventScroll
 
+instance tag ~ 'AttrSet => Constructible EventScroll tag where
+    new _ attrs = do
+        o <- newZeroEventScroll
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventScroll :: Maybe EventScroll
 noEventScroll = Nothing
 
-eventScrollReadType :: EventScroll -> IO EventType
-eventScrollReadType s = withManagedPtr s $ \ptr -> do
+eventScrollReadType :: MonadIO m => EventScroll -> m EventType
+eventScrollReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventScrollReadWindow :: EventScroll -> IO Window
-eventScrollReadWindow s = withManagedPtr s $ \ptr -> do
+eventScrollWriteType :: MonadIO m => EventScroll -> EventType -> m ()
+eventScrollWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventScrollTypeFieldInfo
+instance AttrInfo EventScrollTypeFieldInfo where
+    type AttrAllowedOps EventScrollTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventScrollTypeFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollTypeFieldInfo = EventType
+    type AttrLabel EventScrollTypeFieldInfo = "type"
+    attrGet _ = eventScrollReadType
+    attrSet _ = eventScrollWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollType :: AttrLabelProxy "type"
+eventScrollType = AttrLabelProxy
+
+
+eventScrollReadWindow :: MonadIO m => EventScroll -> m (Maybe Window)
+eventScrollReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventScrollReadSendEvent :: EventScroll -> IO Int8
-eventScrollReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventScrollWriteWindow :: MonadIO m => EventScroll -> Ptr Window -> m ()
+eventScrollWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventScrollClearWindow :: MonadIO m => EventScroll -> m ()
+eventScrollClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventScrollWindowFieldInfo
+instance AttrInfo EventScrollWindowFieldInfo where
+    type AttrAllowedOps EventScrollWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventScrollWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventScrollWindowFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollWindowFieldInfo = Maybe Window
+    type AttrLabel EventScrollWindowFieldInfo = "window"
+    attrGet _ = eventScrollReadWindow
+    attrSet _ = eventScrollWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventScrollClearWindow
+
+eventScrollWindow :: AttrLabelProxy "window"
+eventScrollWindow = AttrLabelProxy
+
+
+eventScrollReadSendEvent :: MonadIO m => EventScroll -> m Int8
+eventScrollReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventScrollReadTime :: EventScroll -> IO Word32
-eventScrollReadTime s = withManagedPtr s $ \ptr -> do
+eventScrollWriteSendEvent :: MonadIO m => EventScroll -> Int8 -> m ()
+eventScrollWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventScrollSendEventFieldInfo
+instance AttrInfo EventScrollSendEventFieldInfo where
+    type AttrAllowedOps EventScrollSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventScrollSendEventFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollSendEventFieldInfo = Int8
+    type AttrLabel EventScrollSendEventFieldInfo = "send_event"
+    attrGet _ = eventScrollReadSendEvent
+    attrSet _ = eventScrollWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollSendEvent :: AttrLabelProxy "sendEvent"
+eventScrollSendEvent = AttrLabelProxy
+
+
+eventScrollReadTime :: MonadIO m => EventScroll -> m Word32
+eventScrollReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Word32
     return val
 
-eventScrollReadX :: EventScroll -> IO Double
-eventScrollReadX s = withManagedPtr s $ \ptr -> do
+eventScrollWriteTime :: MonadIO m => EventScroll -> Word32 -> m ()
+eventScrollWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Word32)
+
+data EventScrollTimeFieldInfo
+instance AttrInfo EventScrollTimeFieldInfo where
+    type AttrAllowedOps EventScrollTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventScrollTimeFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollTimeFieldInfo = Word32
+    type AttrLabel EventScrollTimeFieldInfo = "time"
+    attrGet _ = eventScrollReadTime
+    attrSet _ = eventScrollWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollTime :: AttrLabelProxy "time"
+eventScrollTime = AttrLabelProxy
+
+
+eventScrollReadX :: MonadIO m => EventScroll -> m Double
+eventScrollReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventScrollReadY :: EventScroll -> IO Double
-eventScrollReadY s = withManagedPtr s $ \ptr -> do
+eventScrollWriteX :: MonadIO m => EventScroll -> Double -> m ()
+eventScrollWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 24) (val' :: CDouble)
+
+data EventScrollXFieldInfo
+instance AttrInfo EventScrollXFieldInfo where
+    type AttrAllowedOps EventScrollXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollXFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventScrollXFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollXFieldInfo = Double
+    type AttrLabel EventScrollXFieldInfo = "x"
+    attrGet _ = eventScrollReadX
+    attrSet _ = eventScrollWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollX :: AttrLabelProxy "x"
+eventScrollX = AttrLabelProxy
+
+
+eventScrollReadY :: MonadIO m => EventScroll -> m Double
+eventScrollReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventScrollReadState :: EventScroll -> IO [ModifierType]
-eventScrollReadState s = withManagedPtr s $ \ptr -> do
+eventScrollWriteY :: MonadIO m => EventScroll -> Double -> m ()
+eventScrollWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 32) (val' :: CDouble)
+
+data EventScrollYFieldInfo
+instance AttrInfo EventScrollYFieldInfo where
+    type AttrAllowedOps EventScrollYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollYFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventScrollYFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollYFieldInfo = Double
+    type AttrLabel EventScrollYFieldInfo = "y"
+    attrGet _ = eventScrollReadY
+    attrSet _ = eventScrollWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollY :: AttrLabelProxy "y"
+eventScrollY = AttrLabelProxy
+
+
+eventScrollReadState :: MonadIO m => EventScroll -> m [ModifierType]
+eventScrollReadState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CUInt
     let val' = wordToGFlags val
     return val'
 
-eventScrollReadDirection :: EventScroll -> IO ScrollDirection
-eventScrollReadDirection s = withManagedPtr s $ \ptr -> do
+eventScrollWriteState :: MonadIO m => EventScroll -> [ModifierType] -> m ()
+eventScrollWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = gflagsToWord val
+    poke (ptr `plusPtr` 40) (val' :: CUInt)
+
+data EventScrollStateFieldInfo
+instance AttrInfo EventScrollStateFieldInfo where
+    type AttrAllowedOps EventScrollStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollStateFieldInfo = (~) [ModifierType]
+    type AttrBaseTypeConstraint EventScrollStateFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollStateFieldInfo = [ModifierType]
+    type AttrLabel EventScrollStateFieldInfo = "state"
+    attrGet _ = eventScrollReadState
+    attrSet _ = eventScrollWriteState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollState :: AttrLabelProxy "state"
+eventScrollState = AttrLabelProxy
+
+
+eventScrollReadDirection :: MonadIO m => EventScroll -> m ScrollDirection
+eventScrollReadDirection s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 44) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventScrollReadDevice :: EventScroll -> IO Device
-eventScrollReadDevice s = withManagedPtr s $ \ptr -> do
+eventScrollWriteDirection :: MonadIO m => EventScroll -> ScrollDirection -> m ()
+eventScrollWriteDirection s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 44) (val' :: CUInt)
+
+data EventScrollDirectionFieldInfo
+instance AttrInfo EventScrollDirectionFieldInfo where
+    type AttrAllowedOps EventScrollDirectionFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollDirectionFieldInfo = (~) ScrollDirection
+    type AttrBaseTypeConstraint EventScrollDirectionFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollDirectionFieldInfo = ScrollDirection
+    type AttrLabel EventScrollDirectionFieldInfo = "direction"
+    attrGet _ = eventScrollReadDirection
+    attrSet _ = eventScrollWriteDirection
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollDirection :: AttrLabelProxy "direction"
+eventScrollDirection = AttrLabelProxy
+
+
+eventScrollReadDevice :: MonadIO m => EventScroll -> m (Maybe Device)
+eventScrollReadDevice s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO (Ptr Device)
-    val' <- (newObject Device) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Device) val'
+        return val''
+    return result
 
-eventScrollReadXRoot :: EventScroll -> IO Double
-eventScrollReadXRoot s = withManagedPtr s $ \ptr -> do
+eventScrollWriteDevice :: MonadIO m => EventScroll -> Ptr Device -> m ()
+eventScrollWriteDevice s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (val :: Ptr Device)
+
+eventScrollClearDevice :: MonadIO m => EventScroll -> m ()
+eventScrollClearDevice s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (nullPtr :: Ptr Device)
+
+data EventScrollDeviceFieldInfo
+instance AttrInfo EventScrollDeviceFieldInfo where
+    type AttrAllowedOps EventScrollDeviceFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventScrollDeviceFieldInfo = (~) (Ptr Device)
+    type AttrBaseTypeConstraint EventScrollDeviceFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollDeviceFieldInfo = Maybe Device
+    type AttrLabel EventScrollDeviceFieldInfo = "device"
+    attrGet _ = eventScrollReadDevice
+    attrSet _ = eventScrollWriteDevice
+    attrConstruct = undefined
+    attrClear _ = eventScrollClearDevice
+
+eventScrollDevice :: AttrLabelProxy "device"
+eventScrollDevice = AttrLabelProxy
+
+
+eventScrollReadXRoot :: MonadIO m => EventScroll -> m Double
+eventScrollReadXRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 56) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventScrollReadYRoot :: EventScroll -> IO Double
-eventScrollReadYRoot s = withManagedPtr s $ \ptr -> do
+eventScrollWriteXRoot :: MonadIO m => EventScroll -> Double -> m ()
+eventScrollWriteXRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 56) (val' :: CDouble)
+
+data EventScrollXRootFieldInfo
+instance AttrInfo EventScrollXRootFieldInfo where
+    type AttrAllowedOps EventScrollXRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollXRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventScrollXRootFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollXRootFieldInfo = Double
+    type AttrLabel EventScrollXRootFieldInfo = "x_root"
+    attrGet _ = eventScrollReadXRoot
+    attrSet _ = eventScrollWriteXRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollXRoot :: AttrLabelProxy "xRoot"
+eventScrollXRoot = AttrLabelProxy
+
+
+eventScrollReadYRoot :: MonadIO m => EventScroll -> m Double
+eventScrollReadYRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 64) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventScrollReadDeltaX :: EventScroll -> IO Double
-eventScrollReadDeltaX s = withManagedPtr s $ \ptr -> do
+eventScrollWriteYRoot :: MonadIO m => EventScroll -> Double -> m ()
+eventScrollWriteYRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 64) (val' :: CDouble)
+
+data EventScrollYRootFieldInfo
+instance AttrInfo EventScrollYRootFieldInfo where
+    type AttrAllowedOps EventScrollYRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollYRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventScrollYRootFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollYRootFieldInfo = Double
+    type AttrLabel EventScrollYRootFieldInfo = "y_root"
+    attrGet _ = eventScrollReadYRoot
+    attrSet _ = eventScrollWriteYRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollYRoot :: AttrLabelProxy "yRoot"
+eventScrollYRoot = AttrLabelProxy
+
+
+eventScrollReadDeltaX :: MonadIO m => EventScroll -> m Double
+eventScrollReadDeltaX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 72) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventScrollReadDeltaY :: EventScroll -> IO Double
-eventScrollReadDeltaY s = withManagedPtr s $ \ptr -> do
+eventScrollWriteDeltaX :: MonadIO m => EventScroll -> Double -> m ()
+eventScrollWriteDeltaX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 72) (val' :: CDouble)
+
+data EventScrollDeltaXFieldInfo
+instance AttrInfo EventScrollDeltaXFieldInfo where
+    type AttrAllowedOps EventScrollDeltaXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollDeltaXFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventScrollDeltaXFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollDeltaXFieldInfo = Double
+    type AttrLabel EventScrollDeltaXFieldInfo = "delta_x"
+    attrGet _ = eventScrollReadDeltaX
+    attrSet _ = eventScrollWriteDeltaX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollDeltaX :: AttrLabelProxy "deltaX"
+eventScrollDeltaX = AttrLabelProxy
+
+
+eventScrollReadDeltaY :: MonadIO m => EventScroll -> m Double
+eventScrollReadDeltaY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 80) :: IO CDouble
     let val' = realToFrac val
     return val'
+
+eventScrollWriteDeltaY :: MonadIO m => EventScroll -> Double -> m ()
+eventScrollWriteDeltaY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 80) (val' :: CDouble)
+
+data EventScrollDeltaYFieldInfo
+instance AttrInfo EventScrollDeltaYFieldInfo where
+    type AttrAllowedOps EventScrollDeltaYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventScrollDeltaYFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventScrollDeltaYFieldInfo = (~) EventScroll
+    type AttrGetType EventScrollDeltaYFieldInfo = Double
+    type AttrLabel EventScrollDeltaYFieldInfo = "delta_y"
+    attrGet _ = eventScrollReadDeltaY
+    attrSet _ = eventScrollWriteDeltaY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventScrollDeltaY :: AttrLabelProxy "deltaY"
+eventScrollDeltaY = AttrLabelProxy
+
+
+
+type instance AttributeList EventScroll = EventScrollAttributeList
+type EventScrollAttributeList = ('[ '("type", EventScrollTypeFieldInfo), '("window", EventScrollWindowFieldInfo), '("sendEvent", EventScrollSendEventFieldInfo), '("time", EventScrollTimeFieldInfo), '("x", EventScrollXFieldInfo), '("y", EventScrollYFieldInfo), '("state", EventScrollStateFieldInfo), '("direction", EventScrollDirectionFieldInfo), '("device", EventScrollDeviceFieldInfo), '("xRoot", EventScrollXRootFieldInfo), '("yRoot", EventScrollYRootFieldInfo), '("deltaX", EventScrollDeltaXFieldInfo), '("deltaY", EventScrollDeltaYFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventScrollMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventScrollMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventScroll.hs-boot b/GI/Gdk/Structs/EventScroll.hs-boot
--- a/GI/Gdk/Structs/EventScroll.hs-boot
+++ b/GI/Gdk/Structs/EventScroll.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventScroll where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventSelection.hs b/GI/Gdk/Structs/EventSelection.hs
--- a/GI/Gdk/Structs/EventSelection.hs
+++ b/GI/Gdk/Structs/EventSelection.hs
@@ -20,44 +20,65 @@
 
  -- * Properties
 -- ** Property
+    eventSelectionClearProperty             ,
+    eventSelectionProperty                  ,
     eventSelectionReadProperty              ,
+    eventSelectionWriteProperty             ,
 
 
 -- ** Requestor
+    eventSelectionClearRequestor            ,
     eventSelectionReadRequestor             ,
+    eventSelectionRequestor                 ,
+    eventSelectionWriteRequestor            ,
 
 
 -- ** Selection
+    eventSelectionClearSelection            ,
     eventSelectionReadSelection             ,
+    eventSelectionSelection                 ,
+    eventSelectionWriteSelection            ,
 
 
 -- ** SendEvent
     eventSelectionReadSendEvent             ,
+    eventSelectionSendEvent                 ,
+    eventSelectionWriteSendEvent            ,
 
 
 -- ** Target
+    eventSelectionClearTarget               ,
     eventSelectionReadTarget                ,
+    eventSelectionTarget                    ,
+    eventSelectionWriteTarget               ,
 
 
 -- ** Time
     eventSelectionReadTime                  ,
+    eventSelectionTime                      ,
+    eventSelectionWriteTime                 ,
 
 
 -- ** Type
     eventSelectionReadType                  ,
+    eventSelectionType                      ,
+    eventSelectionWriteType                 ,
 
 
 -- ** Window
+    eventSelectionClearWindow               ,
     eventSelectionReadWindow                ,
+    eventSelectionWindow                    ,
+    eventSelectionWriteWindow               ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -70,57 +91,259 @@
 newZeroEventSelection :: MonadIO m => m EventSelection
 newZeroEventSelection = liftIO $ callocBytes 64 >>= wrapPtr EventSelection
 
+instance tag ~ 'AttrSet => Constructible EventSelection tag where
+    new _ attrs = do
+        o <- newZeroEventSelection
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventSelection :: Maybe EventSelection
 noEventSelection = Nothing
 
-eventSelectionReadType :: EventSelection -> IO EventType
-eventSelectionReadType s = withManagedPtr s $ \ptr -> do
+eventSelectionReadType :: MonadIO m => EventSelection -> m EventType
+eventSelectionReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventSelectionReadWindow :: EventSelection -> IO Window
-eventSelectionReadWindow s = withManagedPtr s $ \ptr -> do
+eventSelectionWriteType :: MonadIO m => EventSelection -> EventType -> m ()
+eventSelectionWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventSelectionTypeFieldInfo
+instance AttrInfo EventSelectionTypeFieldInfo where
+    type AttrAllowedOps EventSelectionTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventSelectionTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventSelectionTypeFieldInfo = (~) EventSelection
+    type AttrGetType EventSelectionTypeFieldInfo = EventType
+    type AttrLabel EventSelectionTypeFieldInfo = "type"
+    attrGet _ = eventSelectionReadType
+    attrSet _ = eventSelectionWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventSelectionType :: AttrLabelProxy "type"
+eventSelectionType = AttrLabelProxy
+
+
+eventSelectionReadWindow :: MonadIO m => EventSelection -> m (Maybe Window)
+eventSelectionReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventSelectionReadSendEvent :: EventSelection -> IO Int8
-eventSelectionReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventSelectionWriteWindow :: MonadIO m => EventSelection -> Ptr Window -> m ()
+eventSelectionWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventSelectionClearWindow :: MonadIO m => EventSelection -> m ()
+eventSelectionClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventSelectionWindowFieldInfo
+instance AttrInfo EventSelectionWindowFieldInfo where
+    type AttrAllowedOps EventSelectionWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventSelectionWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventSelectionWindowFieldInfo = (~) EventSelection
+    type AttrGetType EventSelectionWindowFieldInfo = Maybe Window
+    type AttrLabel EventSelectionWindowFieldInfo = "window"
+    attrGet _ = eventSelectionReadWindow
+    attrSet _ = eventSelectionWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventSelectionClearWindow
+
+eventSelectionWindow :: AttrLabelProxy "window"
+eventSelectionWindow = AttrLabelProxy
+
+
+eventSelectionReadSendEvent :: MonadIO m => EventSelection -> m Int8
+eventSelectionReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventSelectionReadSelection :: EventSelection -> IO Atom
-eventSelectionReadSelection s = withManagedPtr s $ \ptr -> do
+eventSelectionWriteSendEvent :: MonadIO m => EventSelection -> Int8 -> m ()
+eventSelectionWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventSelectionSendEventFieldInfo
+instance AttrInfo EventSelectionSendEventFieldInfo where
+    type AttrAllowedOps EventSelectionSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventSelectionSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventSelectionSendEventFieldInfo = (~) EventSelection
+    type AttrGetType EventSelectionSendEventFieldInfo = Int8
+    type AttrLabel EventSelectionSendEventFieldInfo = "send_event"
+    attrGet _ = eventSelectionReadSendEvent
+    attrSet _ = eventSelectionWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventSelectionSendEvent :: AttrLabelProxy "sendEvent"
+eventSelectionSendEvent = AttrLabelProxy
+
+
+eventSelectionReadSelection :: MonadIO m => EventSelection -> m (Maybe Atom)
+eventSelectionReadSelection s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO (Ptr Atom)
-    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
-    val' <- (\x -> Atom <$> newForeignPtr_ x) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        -- XXX Wrapping a foreign struct/union with no known destructor, leak?
+        val'' <- (\x -> Atom <$> newForeignPtr_ x) val'
+        return val''
+    return result
 
-eventSelectionReadTarget :: EventSelection -> IO Atom
-eventSelectionReadTarget s = withManagedPtr s $ \ptr -> do
+eventSelectionWriteSelection :: MonadIO m => EventSelection -> Ptr Atom -> m ()
+eventSelectionWriteSelection s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Ptr Atom)
+
+eventSelectionClearSelection :: MonadIO m => EventSelection -> m ()
+eventSelectionClearSelection s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (nullPtr :: Ptr Atom)
+
+data EventSelectionSelectionFieldInfo
+instance AttrInfo EventSelectionSelectionFieldInfo where
+    type AttrAllowedOps EventSelectionSelectionFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventSelectionSelectionFieldInfo = (~) (Ptr Atom)
+    type AttrBaseTypeConstraint EventSelectionSelectionFieldInfo = (~) EventSelection
+    type AttrGetType EventSelectionSelectionFieldInfo = Maybe Atom
+    type AttrLabel EventSelectionSelectionFieldInfo = "selection"
+    attrGet _ = eventSelectionReadSelection
+    attrSet _ = eventSelectionWriteSelection
+    attrConstruct = undefined
+    attrClear _ = eventSelectionClearSelection
+
+eventSelectionSelection :: AttrLabelProxy "selection"
+eventSelectionSelection = AttrLabelProxy
+
+
+eventSelectionReadTarget :: MonadIO m => EventSelection -> m (Maybe Atom)
+eventSelectionReadTarget s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO (Ptr Atom)
-    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
-    val' <- (\x -> Atom <$> newForeignPtr_ x) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        -- XXX Wrapping a foreign struct/union with no known destructor, leak?
+        val'' <- (\x -> Atom <$> newForeignPtr_ x) val'
+        return val''
+    return result
 
-eventSelectionReadProperty :: EventSelection -> IO Atom
-eventSelectionReadProperty s = withManagedPtr s $ \ptr -> do
+eventSelectionWriteTarget :: MonadIO m => EventSelection -> Ptr Atom -> m ()
+eventSelectionWriteTarget s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Ptr Atom)
+
+eventSelectionClearTarget :: MonadIO m => EventSelection -> m ()
+eventSelectionClearTarget s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (nullPtr :: Ptr Atom)
+
+data EventSelectionTargetFieldInfo
+instance AttrInfo EventSelectionTargetFieldInfo where
+    type AttrAllowedOps EventSelectionTargetFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventSelectionTargetFieldInfo = (~) (Ptr Atom)
+    type AttrBaseTypeConstraint EventSelectionTargetFieldInfo = (~) EventSelection
+    type AttrGetType EventSelectionTargetFieldInfo = Maybe Atom
+    type AttrLabel EventSelectionTargetFieldInfo = "target"
+    attrGet _ = eventSelectionReadTarget
+    attrSet _ = eventSelectionWriteTarget
+    attrConstruct = undefined
+    attrClear _ = eventSelectionClearTarget
+
+eventSelectionTarget :: AttrLabelProxy "target"
+eventSelectionTarget = AttrLabelProxy
+
+
+eventSelectionReadProperty :: MonadIO m => EventSelection -> m (Maybe Atom)
+eventSelectionReadProperty s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO (Ptr Atom)
-    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
-    val' <- (\x -> Atom <$> newForeignPtr_ x) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        -- XXX Wrapping a foreign struct/union with no known destructor, leak?
+        val'' <- (\x -> Atom <$> newForeignPtr_ x) val'
+        return val''
+    return result
 
-eventSelectionReadTime :: EventSelection -> IO Word32
-eventSelectionReadTime s = withManagedPtr s $ \ptr -> do
+eventSelectionWriteProperty :: MonadIO m => EventSelection -> Ptr Atom -> m ()
+eventSelectionWriteProperty s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (val :: Ptr Atom)
+
+eventSelectionClearProperty :: MonadIO m => EventSelection -> m ()
+eventSelectionClearProperty s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (nullPtr :: Ptr Atom)
+
+data EventSelectionPropertyFieldInfo
+instance AttrInfo EventSelectionPropertyFieldInfo where
+    type AttrAllowedOps EventSelectionPropertyFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventSelectionPropertyFieldInfo = (~) (Ptr Atom)
+    type AttrBaseTypeConstraint EventSelectionPropertyFieldInfo = (~) EventSelection
+    type AttrGetType EventSelectionPropertyFieldInfo = Maybe Atom
+    type AttrLabel EventSelectionPropertyFieldInfo = "property"
+    attrGet _ = eventSelectionReadProperty
+    attrSet _ = eventSelectionWriteProperty
+    attrConstruct = undefined
+    attrClear _ = eventSelectionClearProperty
+
+eventSelectionProperty :: AttrLabelProxy "property"
+eventSelectionProperty = AttrLabelProxy
+
+
+eventSelectionReadTime :: MonadIO m => EventSelection -> m Word32
+eventSelectionReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO Word32
     return val
 
-eventSelectionReadRequestor :: EventSelection -> IO Window
-eventSelectionReadRequestor s = withManagedPtr s $ \ptr -> do
+eventSelectionWriteTime :: MonadIO m => EventSelection -> Word32 -> m ()
+eventSelectionWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (val :: Word32)
+
+data EventSelectionTimeFieldInfo
+instance AttrInfo EventSelectionTimeFieldInfo where
+    type AttrAllowedOps EventSelectionTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventSelectionTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventSelectionTimeFieldInfo = (~) EventSelection
+    type AttrGetType EventSelectionTimeFieldInfo = Word32
+    type AttrLabel EventSelectionTimeFieldInfo = "time"
+    attrGet _ = eventSelectionReadTime
+    attrSet _ = eventSelectionWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventSelectionTime :: AttrLabelProxy "time"
+eventSelectionTime = AttrLabelProxy
+
+
+eventSelectionReadRequestor :: MonadIO m => EventSelection -> m (Maybe Window)
+eventSelectionReadRequestor s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 56) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
+
+eventSelectionWriteRequestor :: MonadIO m => EventSelection -> Ptr Window -> m ()
+eventSelectionWriteRequestor s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 56) (val :: Ptr Window)
+
+eventSelectionClearRequestor :: MonadIO m => EventSelection -> m ()
+eventSelectionClearRequestor s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 56) (nullPtr :: Ptr Window)
+
+data EventSelectionRequestorFieldInfo
+instance AttrInfo EventSelectionRequestorFieldInfo where
+    type AttrAllowedOps EventSelectionRequestorFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventSelectionRequestorFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventSelectionRequestorFieldInfo = (~) EventSelection
+    type AttrGetType EventSelectionRequestorFieldInfo = Maybe Window
+    type AttrLabel EventSelectionRequestorFieldInfo = "requestor"
+    attrGet _ = eventSelectionReadRequestor
+    attrSet _ = eventSelectionWriteRequestor
+    attrConstruct = undefined
+    attrClear _ = eventSelectionClearRequestor
+
+eventSelectionRequestor :: AttrLabelProxy "requestor"
+eventSelectionRequestor = AttrLabelProxy
+
+
+
+type instance AttributeList EventSelection = EventSelectionAttributeList
+type EventSelectionAttributeList = ('[ '("type", EventSelectionTypeFieldInfo), '("window", EventSelectionWindowFieldInfo), '("sendEvent", EventSelectionSendEventFieldInfo), '("selection", EventSelectionSelectionFieldInfo), '("target", EventSelectionTargetFieldInfo), '("property", EventSelectionPropertyFieldInfo), '("time", EventSelectionTimeFieldInfo), '("requestor", EventSelectionRequestorFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventSelectionMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventSelectionMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventSelection.hs-boot b/GI/Gdk/Structs/EventSelection.hs-boot
--- a/GI/Gdk/Structs/EventSelection.hs-boot
+++ b/GI/Gdk/Structs/EventSelection.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventSelection where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventSequence.hs b/GI/Gdk/Structs/EventSequence.hs
--- a/GI/Gdk/Structs/EventSequence.hs
+++ b/GI/Gdk/Structs/EventSequence.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -35,6 +35,10 @@
 
 noEventSequence :: Maybe EventSequence
 noEventSequence = Nothing
+
+
+type instance AttributeList EventSequence = EventSequenceAttributeList
+type EventSequenceAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveEventSequenceMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventSequenceMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventSequence.hs-boot b/GI/Gdk/Structs/EventSequence.hs-boot
--- a/GI/Gdk/Structs/EventSequence.hs-boot
+++ b/GI/Gdk/Structs/EventSequence.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventSequence where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventSetting.hs b/GI/Gdk/Structs/EventSetting.hs
--- a/GI/Gdk/Structs/EventSetting.hs
+++ b/GI/Gdk/Structs/EventSetting.hs
@@ -19,32 +19,44 @@
 
  -- * Properties
 -- ** Action
+    eventSettingAction                      ,
     eventSettingReadAction                  ,
+    eventSettingWriteAction                 ,
 
 
 -- ** Name
+    eventSettingClearName                   ,
+    eventSettingName                        ,
     eventSettingReadName                    ,
+    eventSettingWriteName                   ,
 
 
 -- ** SendEvent
     eventSettingReadSendEvent               ,
+    eventSettingSendEvent                   ,
+    eventSettingWriteSendEvent              ,
 
 
 -- ** Type
     eventSettingReadType                    ,
+    eventSettingType                        ,
+    eventSettingWriteType                   ,
 
 
 -- ** Window
+    eventSettingClearWindow                 ,
     eventSettingReadWindow                  ,
+    eventSettingWindow                      ,
+    eventSettingWriteWindow                 ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -57,37 +69,162 @@
 newZeroEventSetting :: MonadIO m => m EventSetting
 newZeroEventSetting = liftIO $ callocBytes 32 >>= wrapPtr EventSetting
 
+instance tag ~ 'AttrSet => Constructible EventSetting tag where
+    new _ attrs = do
+        o <- newZeroEventSetting
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventSetting :: Maybe EventSetting
 noEventSetting = Nothing
 
-eventSettingReadType :: EventSetting -> IO EventType
-eventSettingReadType s = withManagedPtr s $ \ptr -> do
+eventSettingReadType :: MonadIO m => EventSetting -> m EventType
+eventSettingReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventSettingReadWindow :: EventSetting -> IO Window
-eventSettingReadWindow s = withManagedPtr s $ \ptr -> do
+eventSettingWriteType :: MonadIO m => EventSetting -> EventType -> m ()
+eventSettingWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventSettingTypeFieldInfo
+instance AttrInfo EventSettingTypeFieldInfo where
+    type AttrAllowedOps EventSettingTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventSettingTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventSettingTypeFieldInfo = (~) EventSetting
+    type AttrGetType EventSettingTypeFieldInfo = EventType
+    type AttrLabel EventSettingTypeFieldInfo = "type"
+    attrGet _ = eventSettingReadType
+    attrSet _ = eventSettingWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventSettingType :: AttrLabelProxy "type"
+eventSettingType = AttrLabelProxy
+
+
+eventSettingReadWindow :: MonadIO m => EventSetting -> m (Maybe Window)
+eventSettingReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventSettingReadSendEvent :: EventSetting -> IO Int8
-eventSettingReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventSettingWriteWindow :: MonadIO m => EventSetting -> Ptr Window -> m ()
+eventSettingWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventSettingClearWindow :: MonadIO m => EventSetting -> m ()
+eventSettingClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventSettingWindowFieldInfo
+instance AttrInfo EventSettingWindowFieldInfo where
+    type AttrAllowedOps EventSettingWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventSettingWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventSettingWindowFieldInfo = (~) EventSetting
+    type AttrGetType EventSettingWindowFieldInfo = Maybe Window
+    type AttrLabel EventSettingWindowFieldInfo = "window"
+    attrGet _ = eventSettingReadWindow
+    attrSet _ = eventSettingWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventSettingClearWindow
+
+eventSettingWindow :: AttrLabelProxy "window"
+eventSettingWindow = AttrLabelProxy
+
+
+eventSettingReadSendEvent :: MonadIO m => EventSetting -> m Int8
+eventSettingReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventSettingReadAction :: EventSetting -> IO SettingAction
-eventSettingReadAction s = withManagedPtr s $ \ptr -> do
+eventSettingWriteSendEvent :: MonadIO m => EventSetting -> Int8 -> m ()
+eventSettingWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventSettingSendEventFieldInfo
+instance AttrInfo EventSettingSendEventFieldInfo where
+    type AttrAllowedOps EventSettingSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventSettingSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventSettingSendEventFieldInfo = (~) EventSetting
+    type AttrGetType EventSettingSendEventFieldInfo = Int8
+    type AttrLabel EventSettingSendEventFieldInfo = "send_event"
+    attrGet _ = eventSettingReadSendEvent
+    attrSet _ = eventSettingWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventSettingSendEvent :: AttrLabelProxy "sendEvent"
+eventSettingSendEvent = AttrLabelProxy
+
+
+eventSettingReadAction :: MonadIO m => EventSetting -> m SettingAction
+eventSettingReadAction s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventSettingReadName :: EventSetting -> IO T.Text
-eventSettingReadName s = withManagedPtr s $ \ptr -> do
+eventSettingWriteAction :: MonadIO m => EventSetting -> SettingAction -> m ()
+eventSettingWriteAction s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 20) (val' :: CUInt)
+
+data EventSettingActionFieldInfo
+instance AttrInfo EventSettingActionFieldInfo where
+    type AttrAllowedOps EventSettingActionFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventSettingActionFieldInfo = (~) SettingAction
+    type AttrBaseTypeConstraint EventSettingActionFieldInfo = (~) EventSetting
+    type AttrGetType EventSettingActionFieldInfo = SettingAction
+    type AttrLabel EventSettingActionFieldInfo = "action"
+    attrGet _ = eventSettingReadAction
+    attrSet _ = eventSettingWriteAction
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventSettingAction :: AttrLabelProxy "action"
+eventSettingAction = AttrLabelProxy
+
+
+eventSettingReadName :: MonadIO m => EventSetting -> m (Maybe T.Text)
+eventSettingReadName s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
+
+eventSettingWriteName :: MonadIO m => EventSetting -> CString -> m ()
+eventSettingWriteName s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: CString)
+
+eventSettingClearName :: MonadIO m => EventSetting -> m ()
+eventSettingClearName s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (nullPtr :: CString)
+
+data EventSettingNameFieldInfo
+instance AttrInfo EventSettingNameFieldInfo where
+    type AttrAllowedOps EventSettingNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventSettingNameFieldInfo = (~) CString
+    type AttrBaseTypeConstraint EventSettingNameFieldInfo = (~) EventSetting
+    type AttrGetType EventSettingNameFieldInfo = Maybe T.Text
+    type AttrLabel EventSettingNameFieldInfo = "name"
+    attrGet _ = eventSettingReadName
+    attrSet _ = eventSettingWriteName
+    attrConstruct = undefined
+    attrClear _ = eventSettingClearName
+
+eventSettingName :: AttrLabelProxy "name"
+eventSettingName = AttrLabelProxy
+
+
+
+type instance AttributeList EventSetting = EventSettingAttributeList
+type EventSettingAttributeList = ('[ '("type", EventSettingTypeFieldInfo), '("window", EventSettingWindowFieldInfo), '("sendEvent", EventSettingSendEventFieldInfo), '("action", EventSettingActionFieldInfo), '("name", EventSettingNameFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventSettingMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventSettingMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventSetting.hs-boot b/GI/Gdk/Structs/EventSetting.hs-boot
--- a/GI/Gdk/Structs/EventSetting.hs-boot
+++ b/GI/Gdk/Structs/EventSetting.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventSetting where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventTouch.hs b/GI/Gdk/Structs/EventTouch.hs
--- a/GI/Gdk/Structs/EventTouch.hs
+++ b/GI/Gdk/Structs/EventTouch.hs
@@ -28,64 +28,93 @@
 
  -- * Properties
 -- ** Axes
+    eventTouchAxes                          ,
     eventTouchReadAxes                      ,
+    eventTouchWriteAxes                     ,
 
 
 -- ** Device
+    eventTouchClearDevice                   ,
+    eventTouchDevice                        ,
     eventTouchReadDevice                    ,
+    eventTouchWriteDevice                   ,
 
 
 -- ** EmulatingPointer
+    eventTouchEmulatingPointer              ,
     eventTouchReadEmulatingPointer          ,
+    eventTouchWriteEmulatingPointer         ,
 
 
 -- ** SendEvent
     eventTouchReadSendEvent                 ,
+    eventTouchSendEvent                     ,
+    eventTouchWriteSendEvent                ,
 
 
 -- ** Sequence
+    eventTouchClearSequence                 ,
     eventTouchReadSequence                  ,
+    eventTouchSequence                      ,
+    eventTouchWriteSequence                 ,
 
 
 -- ** State
     eventTouchReadState                     ,
+    eventTouchState                         ,
+    eventTouchWriteState                    ,
 
 
 -- ** Time
     eventTouchReadTime                      ,
+    eventTouchTime                          ,
+    eventTouchWriteTime                     ,
 
 
 -- ** Type
     eventTouchReadType                      ,
+    eventTouchType                          ,
+    eventTouchWriteType                     ,
 
 
 -- ** Window
+    eventTouchClearWindow                   ,
     eventTouchReadWindow                    ,
+    eventTouchWindow                        ,
+    eventTouchWriteWindow                   ,
 
 
 -- ** X
     eventTouchReadX                         ,
+    eventTouchWriteX                        ,
+    eventTouchX                             ,
 
 
 -- ** XRoot
     eventTouchReadXRoot                     ,
+    eventTouchWriteXRoot                    ,
+    eventTouchXRoot                         ,
 
 
 -- ** Y
     eventTouchReadY                         ,
+    eventTouchWriteY                        ,
+    eventTouchY                             ,
 
 
 -- ** YRoot
     eventTouchReadYRoot                     ,
+    eventTouchWriteYRoot                    ,
+    eventTouchYRoot                         ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -98,84 +127,381 @@
 newZeroEventTouch :: MonadIO m => m EventTouch
 newZeroEventTouch = liftIO $ callocBytes 96 >>= wrapPtr EventTouch
 
+instance tag ~ 'AttrSet => Constructible EventTouch tag where
+    new _ attrs = do
+        o <- newZeroEventTouch
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventTouch :: Maybe EventTouch
 noEventTouch = Nothing
 
-eventTouchReadType :: EventTouch -> IO EventType
-eventTouchReadType s = withManagedPtr s $ \ptr -> do
+eventTouchReadType :: MonadIO m => EventTouch -> m EventType
+eventTouchReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventTouchReadWindow :: EventTouch -> IO Window
-eventTouchReadWindow s = withManagedPtr s $ \ptr -> do
+eventTouchWriteType :: MonadIO m => EventTouch -> EventType -> m ()
+eventTouchWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventTouchTypeFieldInfo
+instance AttrInfo EventTouchTypeFieldInfo where
+    type AttrAllowedOps EventTouchTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventTouchTypeFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchTypeFieldInfo = EventType
+    type AttrLabel EventTouchTypeFieldInfo = "type"
+    attrGet _ = eventTouchReadType
+    attrSet _ = eventTouchWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchType :: AttrLabelProxy "type"
+eventTouchType = AttrLabelProxy
+
+
+eventTouchReadWindow :: MonadIO m => EventTouch -> m (Maybe Window)
+eventTouchReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventTouchReadSendEvent :: EventTouch -> IO Int8
-eventTouchReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventTouchWriteWindow :: MonadIO m => EventTouch -> Ptr Window -> m ()
+eventTouchWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventTouchClearWindow :: MonadIO m => EventTouch -> m ()
+eventTouchClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventTouchWindowFieldInfo
+instance AttrInfo EventTouchWindowFieldInfo where
+    type AttrAllowedOps EventTouchWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventTouchWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventTouchWindowFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchWindowFieldInfo = Maybe Window
+    type AttrLabel EventTouchWindowFieldInfo = "window"
+    attrGet _ = eventTouchReadWindow
+    attrSet _ = eventTouchWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventTouchClearWindow
+
+eventTouchWindow :: AttrLabelProxy "window"
+eventTouchWindow = AttrLabelProxy
+
+
+eventTouchReadSendEvent :: MonadIO m => EventTouch -> m Int8
+eventTouchReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventTouchReadTime :: EventTouch -> IO Word32
-eventTouchReadTime s = withManagedPtr s $ \ptr -> do
+eventTouchWriteSendEvent :: MonadIO m => EventTouch -> Int8 -> m ()
+eventTouchWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventTouchSendEventFieldInfo
+instance AttrInfo EventTouchSendEventFieldInfo where
+    type AttrAllowedOps EventTouchSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventTouchSendEventFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchSendEventFieldInfo = Int8
+    type AttrLabel EventTouchSendEventFieldInfo = "send_event"
+    attrGet _ = eventTouchReadSendEvent
+    attrSet _ = eventTouchWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchSendEvent :: AttrLabelProxy "sendEvent"
+eventTouchSendEvent = AttrLabelProxy
+
+
+eventTouchReadTime :: MonadIO m => EventTouch -> m Word32
+eventTouchReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Word32
     return val
 
-eventTouchReadX :: EventTouch -> IO Double
-eventTouchReadX s = withManagedPtr s $ \ptr -> do
+eventTouchWriteTime :: MonadIO m => EventTouch -> Word32 -> m ()
+eventTouchWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Word32)
+
+data EventTouchTimeFieldInfo
+instance AttrInfo EventTouchTimeFieldInfo where
+    type AttrAllowedOps EventTouchTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventTouchTimeFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchTimeFieldInfo = Word32
+    type AttrLabel EventTouchTimeFieldInfo = "time"
+    attrGet _ = eventTouchReadTime
+    attrSet _ = eventTouchWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchTime :: AttrLabelProxy "time"
+eventTouchTime = AttrLabelProxy
+
+
+eventTouchReadX :: MonadIO m => EventTouch -> m Double
+eventTouchReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchReadY :: EventTouch -> IO Double
-eventTouchReadY s = withManagedPtr s $ \ptr -> do
+eventTouchWriteX :: MonadIO m => EventTouch -> Double -> m ()
+eventTouchWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 24) (val' :: CDouble)
+
+data EventTouchXFieldInfo
+instance AttrInfo EventTouchXFieldInfo where
+    type AttrAllowedOps EventTouchXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchXFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchXFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchXFieldInfo = Double
+    type AttrLabel EventTouchXFieldInfo = "x"
+    attrGet _ = eventTouchReadX
+    attrSet _ = eventTouchWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchX :: AttrLabelProxy "x"
+eventTouchX = AttrLabelProxy
+
+
+eventTouchReadY :: MonadIO m => EventTouch -> m Double
+eventTouchReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchReadAxes :: EventTouch -> IO Double
-eventTouchReadAxes s = withManagedPtr s $ \ptr -> do
+eventTouchWriteY :: MonadIO m => EventTouch -> Double -> m ()
+eventTouchWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 32) (val' :: CDouble)
+
+data EventTouchYFieldInfo
+instance AttrInfo EventTouchYFieldInfo where
+    type AttrAllowedOps EventTouchYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchYFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchYFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchYFieldInfo = Double
+    type AttrLabel EventTouchYFieldInfo = "y"
+    attrGet _ = eventTouchReadY
+    attrSet _ = eventTouchWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchY :: AttrLabelProxy "y"
+eventTouchY = AttrLabelProxy
+
+
+eventTouchReadAxes :: MonadIO m => EventTouch -> m Double
+eventTouchReadAxes s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchReadState :: EventTouch -> IO [ModifierType]
-eventTouchReadState s = withManagedPtr s $ \ptr -> do
+eventTouchWriteAxes :: MonadIO m => EventTouch -> Double -> m ()
+eventTouchWriteAxes s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 40) (val' :: CDouble)
+
+data EventTouchAxesFieldInfo
+instance AttrInfo EventTouchAxesFieldInfo where
+    type AttrAllowedOps EventTouchAxesFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchAxesFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchAxesFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchAxesFieldInfo = Double
+    type AttrLabel EventTouchAxesFieldInfo = "axes"
+    attrGet _ = eventTouchReadAxes
+    attrSet _ = eventTouchWriteAxes
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchAxes :: AttrLabelProxy "axes"
+eventTouchAxes = AttrLabelProxy
+
+
+eventTouchReadState :: MonadIO m => EventTouch -> m [ModifierType]
+eventTouchReadState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO CUInt
     let val' = wordToGFlags val
     return val'
 
-eventTouchReadSequence :: EventTouch -> IO EventSequence
-eventTouchReadSequence s = withManagedPtr s $ \ptr -> do
+eventTouchWriteState :: MonadIO m => EventTouch -> [ModifierType] -> m ()
+eventTouchWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = gflagsToWord val
+    poke (ptr `plusPtr` 48) (val' :: CUInt)
+
+data EventTouchStateFieldInfo
+instance AttrInfo EventTouchStateFieldInfo where
+    type AttrAllowedOps EventTouchStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchStateFieldInfo = (~) [ModifierType]
+    type AttrBaseTypeConstraint EventTouchStateFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchStateFieldInfo = [ModifierType]
+    type AttrLabel EventTouchStateFieldInfo = "state"
+    attrGet _ = eventTouchReadState
+    attrSet _ = eventTouchWriteState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchState :: AttrLabelProxy "state"
+eventTouchState = AttrLabelProxy
+
+
+eventTouchReadSequence :: MonadIO m => EventTouch -> m (Maybe EventSequence)
+eventTouchReadSequence s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 56) :: IO (Ptr EventSequence)
-    val' <- (newBoxed EventSequence) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newBoxed EventSequence) val'
+        return val''
+    return result
 
-eventTouchReadEmulatingPointer :: EventTouch -> IO Bool
-eventTouchReadEmulatingPointer s = withManagedPtr s $ \ptr -> do
+eventTouchWriteSequence :: MonadIO m => EventTouch -> Ptr EventSequence -> m ()
+eventTouchWriteSequence s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 56) (val :: Ptr EventSequence)
+
+eventTouchClearSequence :: MonadIO m => EventTouch -> m ()
+eventTouchClearSequence s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 56) (nullPtr :: Ptr EventSequence)
+
+data EventTouchSequenceFieldInfo
+instance AttrInfo EventTouchSequenceFieldInfo where
+    type AttrAllowedOps EventTouchSequenceFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventTouchSequenceFieldInfo = (~) (Ptr EventSequence)
+    type AttrBaseTypeConstraint EventTouchSequenceFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchSequenceFieldInfo = Maybe EventSequence
+    type AttrLabel EventTouchSequenceFieldInfo = "sequence"
+    attrGet _ = eventTouchReadSequence
+    attrSet _ = eventTouchWriteSequence
+    attrConstruct = undefined
+    attrClear _ = eventTouchClearSequence
+
+eventTouchSequence :: AttrLabelProxy "sequence"
+eventTouchSequence = AttrLabelProxy
+
+
+eventTouchReadEmulatingPointer :: MonadIO m => EventTouch -> m Bool
+eventTouchReadEmulatingPointer s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 64) :: IO CInt
     let val' = (/= 0) val
     return val'
 
-eventTouchReadDevice :: EventTouch -> IO Device
-eventTouchReadDevice s = withManagedPtr s $ \ptr -> do
+eventTouchWriteEmulatingPointer :: MonadIO m => EventTouch -> Bool -> m ()
+eventTouchWriteEmulatingPointer s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 64) (val' :: CInt)
+
+data EventTouchEmulatingPointerFieldInfo
+instance AttrInfo EventTouchEmulatingPointerFieldInfo where
+    type AttrAllowedOps EventTouchEmulatingPointerFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchEmulatingPointerFieldInfo = (~) Bool
+    type AttrBaseTypeConstraint EventTouchEmulatingPointerFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchEmulatingPointerFieldInfo = Bool
+    type AttrLabel EventTouchEmulatingPointerFieldInfo = "emulating_pointer"
+    attrGet _ = eventTouchReadEmulatingPointer
+    attrSet _ = eventTouchWriteEmulatingPointer
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchEmulatingPointer :: AttrLabelProxy "emulatingPointer"
+eventTouchEmulatingPointer = AttrLabelProxy
+
+
+eventTouchReadDevice :: MonadIO m => EventTouch -> m (Maybe Device)
+eventTouchReadDevice s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 72) :: IO (Ptr Device)
-    val' <- (newObject Device) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Device) val'
+        return val''
+    return result
 
-eventTouchReadXRoot :: EventTouch -> IO Double
-eventTouchReadXRoot s = withManagedPtr s $ \ptr -> do
+eventTouchWriteDevice :: MonadIO m => EventTouch -> Ptr Device -> m ()
+eventTouchWriteDevice s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 72) (val :: Ptr Device)
+
+eventTouchClearDevice :: MonadIO m => EventTouch -> m ()
+eventTouchClearDevice s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 72) (nullPtr :: Ptr Device)
+
+data EventTouchDeviceFieldInfo
+instance AttrInfo EventTouchDeviceFieldInfo where
+    type AttrAllowedOps EventTouchDeviceFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventTouchDeviceFieldInfo = (~) (Ptr Device)
+    type AttrBaseTypeConstraint EventTouchDeviceFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchDeviceFieldInfo = Maybe Device
+    type AttrLabel EventTouchDeviceFieldInfo = "device"
+    attrGet _ = eventTouchReadDevice
+    attrSet _ = eventTouchWriteDevice
+    attrConstruct = undefined
+    attrClear _ = eventTouchClearDevice
+
+eventTouchDevice :: AttrLabelProxy "device"
+eventTouchDevice = AttrLabelProxy
+
+
+eventTouchReadXRoot :: MonadIO m => EventTouch -> m Double
+eventTouchReadXRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 80) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchReadYRoot :: EventTouch -> IO Double
-eventTouchReadYRoot s = withManagedPtr s $ \ptr -> do
+eventTouchWriteXRoot :: MonadIO m => EventTouch -> Double -> m ()
+eventTouchWriteXRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 80) (val' :: CDouble)
+
+data EventTouchXRootFieldInfo
+instance AttrInfo EventTouchXRootFieldInfo where
+    type AttrAllowedOps EventTouchXRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchXRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchXRootFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchXRootFieldInfo = Double
+    type AttrLabel EventTouchXRootFieldInfo = "x_root"
+    attrGet _ = eventTouchReadXRoot
+    attrSet _ = eventTouchWriteXRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchXRoot :: AttrLabelProxy "xRoot"
+eventTouchXRoot = AttrLabelProxy
+
+
+eventTouchReadYRoot :: MonadIO m => EventTouch -> m Double
+eventTouchReadYRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 88) :: IO CDouble
     let val' = realToFrac val
     return val'
+
+eventTouchWriteYRoot :: MonadIO m => EventTouch -> Double -> m ()
+eventTouchWriteYRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 88) (val' :: CDouble)
+
+data EventTouchYRootFieldInfo
+instance AttrInfo EventTouchYRootFieldInfo where
+    type AttrAllowedOps EventTouchYRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchYRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchYRootFieldInfo = (~) EventTouch
+    type AttrGetType EventTouchYRootFieldInfo = Double
+    type AttrLabel EventTouchYRootFieldInfo = "y_root"
+    attrGet _ = eventTouchReadYRoot
+    attrSet _ = eventTouchWriteYRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchYRoot :: AttrLabelProxy "yRoot"
+eventTouchYRoot = AttrLabelProxy
+
+
+
+type instance AttributeList EventTouch = EventTouchAttributeList
+type EventTouchAttributeList = ('[ '("type", EventTouchTypeFieldInfo), '("window", EventTouchWindowFieldInfo), '("sendEvent", EventTouchSendEventFieldInfo), '("time", EventTouchTimeFieldInfo), '("x", EventTouchXFieldInfo), '("y", EventTouchYFieldInfo), '("axes", EventTouchAxesFieldInfo), '("state", EventTouchStateFieldInfo), '("sequence", EventTouchSequenceFieldInfo), '("emulatingPointer", EventTouchEmulatingPointerFieldInfo), '("device", EventTouchDeviceFieldInfo), '("xRoot", EventTouchXRootFieldInfo), '("yRoot", EventTouchYRootFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventTouchMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventTouchMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventTouch.hs-boot b/GI/Gdk/Structs/EventTouch.hs-boot
--- a/GI/Gdk/Structs/EventTouch.hs-boot
+++ b/GI/Gdk/Structs/EventTouch.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventTouch where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventTouchpadPinch.hs b/GI/Gdk/Structs/EventTouchpadPinch.hs
--- a/GI/Gdk/Structs/EventTouchpadPinch.hs
+++ b/GI/Gdk/Structs/EventTouchpadPinch.hs
@@ -19,72 +19,103 @@
 
  -- * Properties
 -- ** AngleDelta
+    eventTouchpadPinchAngleDelta            ,
     eventTouchpadPinchReadAngleDelta        ,
+    eventTouchpadPinchWriteAngleDelta       ,
 
 
 -- ** Dx
+    eventTouchpadPinchDx                    ,
     eventTouchpadPinchReadDx                ,
+    eventTouchpadPinchWriteDx               ,
 
 
 -- ** Dy
+    eventTouchpadPinchDy                    ,
     eventTouchpadPinchReadDy                ,
+    eventTouchpadPinchWriteDy               ,
 
 
 -- ** NFingers
+    eventTouchpadPinchNFingers              ,
     eventTouchpadPinchReadNFingers          ,
+    eventTouchpadPinchWriteNFingers         ,
 
 
 -- ** Phase
+    eventTouchpadPinchPhase                 ,
     eventTouchpadPinchReadPhase             ,
+    eventTouchpadPinchWritePhase            ,
 
 
 -- ** Scale
     eventTouchpadPinchReadScale             ,
+    eventTouchpadPinchScale                 ,
+    eventTouchpadPinchWriteScale            ,
 
 
 -- ** SendEvent
     eventTouchpadPinchReadSendEvent         ,
+    eventTouchpadPinchSendEvent             ,
+    eventTouchpadPinchWriteSendEvent        ,
 
 
 -- ** State
     eventTouchpadPinchReadState             ,
+    eventTouchpadPinchState                 ,
+    eventTouchpadPinchWriteState            ,
 
 
 -- ** Time
     eventTouchpadPinchReadTime              ,
+    eventTouchpadPinchTime                  ,
+    eventTouchpadPinchWriteTime             ,
 
 
 -- ** Type
     eventTouchpadPinchReadType              ,
+    eventTouchpadPinchType                  ,
+    eventTouchpadPinchWriteType             ,
 
 
 -- ** Window
+    eventTouchpadPinchClearWindow           ,
     eventTouchpadPinchReadWindow            ,
+    eventTouchpadPinchWindow                ,
+    eventTouchpadPinchWriteWindow           ,
 
 
 -- ** X
     eventTouchpadPinchReadX                 ,
+    eventTouchpadPinchWriteX                ,
+    eventTouchpadPinchX                     ,
 
 
 -- ** XRoot
     eventTouchpadPinchReadXRoot             ,
+    eventTouchpadPinchWriteXRoot            ,
+    eventTouchpadPinchXRoot                 ,
 
 
 -- ** Y
     eventTouchpadPinchReadY                 ,
+    eventTouchpadPinchWriteY                ,
+    eventTouchpadPinchY                     ,
 
 
 -- ** YRoot
     eventTouchpadPinchReadYRoot             ,
+    eventTouchpadPinchWriteYRoot            ,
+    eventTouchpadPinchYRoot                 ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -97,95 +128,423 @@
 newZeroEventTouchpadPinch :: MonadIO m => m EventTouchpadPinch
 newZeroEventTouchpadPinch = liftIO $ callocBytes 104 >>= wrapPtr EventTouchpadPinch
 
+instance tag ~ 'AttrSet => Constructible EventTouchpadPinch tag where
+    new _ attrs = do
+        o <- newZeroEventTouchpadPinch
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventTouchpadPinch :: Maybe EventTouchpadPinch
 noEventTouchpadPinch = Nothing
 
-eventTouchpadPinchReadType :: EventTouchpadPinch -> IO EventType
-eventTouchpadPinchReadType s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchReadType :: MonadIO m => EventTouchpadPinch -> m EventType
+eventTouchpadPinchReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventTouchpadPinchReadWindow :: EventTouchpadPinch -> IO Window
-eventTouchpadPinchReadWindow s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteType :: MonadIO m => EventTouchpadPinch -> EventType -> m ()
+eventTouchpadPinchWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventTouchpadPinchTypeFieldInfo
+instance AttrInfo EventTouchpadPinchTypeFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventTouchpadPinchTypeFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchTypeFieldInfo = EventType
+    type AttrLabel EventTouchpadPinchTypeFieldInfo = "type"
+    attrGet _ = eventTouchpadPinchReadType
+    attrSet _ = eventTouchpadPinchWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchType :: AttrLabelProxy "type"
+eventTouchpadPinchType = AttrLabelProxy
+
+
+eventTouchpadPinchReadWindow :: MonadIO m => EventTouchpadPinch -> m (Maybe Window)
+eventTouchpadPinchReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventTouchpadPinchReadSendEvent :: EventTouchpadPinch -> IO Int8
-eventTouchpadPinchReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteWindow :: MonadIO m => EventTouchpadPinch -> Ptr Window -> m ()
+eventTouchpadPinchWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventTouchpadPinchClearWindow :: MonadIO m => EventTouchpadPinch -> m ()
+eventTouchpadPinchClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventTouchpadPinchWindowFieldInfo
+instance AttrInfo EventTouchpadPinchWindowFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventTouchpadPinchWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventTouchpadPinchWindowFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchWindowFieldInfo = Maybe Window
+    type AttrLabel EventTouchpadPinchWindowFieldInfo = "window"
+    attrGet _ = eventTouchpadPinchReadWindow
+    attrSet _ = eventTouchpadPinchWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventTouchpadPinchClearWindow
+
+eventTouchpadPinchWindow :: AttrLabelProxy "window"
+eventTouchpadPinchWindow = AttrLabelProxy
+
+
+eventTouchpadPinchReadSendEvent :: MonadIO m => EventTouchpadPinch -> m Int8
+eventTouchpadPinchReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventTouchpadPinchReadPhase :: EventTouchpadPinch -> IO TouchpadGesturePhase
-eventTouchpadPinchReadPhase s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteSendEvent :: MonadIO m => EventTouchpadPinch -> Int8 -> m ()
+eventTouchpadPinchWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventTouchpadPinchSendEventFieldInfo
+instance AttrInfo EventTouchpadPinchSendEventFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventTouchpadPinchSendEventFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchSendEventFieldInfo = Int8
+    type AttrLabel EventTouchpadPinchSendEventFieldInfo = "send_event"
+    attrGet _ = eventTouchpadPinchReadSendEvent
+    attrSet _ = eventTouchpadPinchWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchSendEvent :: AttrLabelProxy "sendEvent"
+eventTouchpadPinchSendEvent = AttrLabelProxy
+
+
+eventTouchpadPinchReadPhase :: MonadIO m => EventTouchpadPinch -> m TouchpadGesturePhase
+eventTouchpadPinchReadPhase s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventTouchpadPinchReadNFingers :: EventTouchpadPinch -> IO Int8
-eventTouchpadPinchReadNFingers s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWritePhase :: MonadIO m => EventTouchpadPinch -> TouchpadGesturePhase -> m ()
+eventTouchpadPinchWritePhase s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 20) (val' :: CUInt)
+
+data EventTouchpadPinchPhaseFieldInfo
+instance AttrInfo EventTouchpadPinchPhaseFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchPhaseFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchPhaseFieldInfo = (~) TouchpadGesturePhase
+    type AttrBaseTypeConstraint EventTouchpadPinchPhaseFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchPhaseFieldInfo = TouchpadGesturePhase
+    type AttrLabel EventTouchpadPinchPhaseFieldInfo = "phase"
+    attrGet _ = eventTouchpadPinchReadPhase
+    attrSet _ = eventTouchpadPinchWritePhase
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchPhase :: AttrLabelProxy "phase"
+eventTouchpadPinchPhase = AttrLabelProxy
+
+
+eventTouchpadPinchReadNFingers :: MonadIO m => EventTouchpadPinch -> m Int8
+eventTouchpadPinchReadNFingers s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO Int8
     return val
 
-eventTouchpadPinchReadTime :: EventTouchpadPinch -> IO Word32
-eventTouchpadPinchReadTime s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteNFingers :: MonadIO m => EventTouchpadPinch -> Int8 -> m ()
+eventTouchpadPinchWriteNFingers s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Int8)
+
+data EventTouchpadPinchNFingersFieldInfo
+instance AttrInfo EventTouchpadPinchNFingersFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchNFingersFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchNFingersFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventTouchpadPinchNFingersFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchNFingersFieldInfo = Int8
+    type AttrLabel EventTouchpadPinchNFingersFieldInfo = "n_fingers"
+    attrGet _ = eventTouchpadPinchReadNFingers
+    attrSet _ = eventTouchpadPinchWriteNFingers
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchNFingers :: AttrLabelProxy "nFingers"
+eventTouchpadPinchNFingers = AttrLabelProxy
+
+
+eventTouchpadPinchReadTime :: MonadIO m => EventTouchpadPinch -> m Word32
+eventTouchpadPinchReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 28) :: IO Word32
     return val
 
-eventTouchpadPinchReadX :: EventTouchpadPinch -> IO Double
-eventTouchpadPinchReadX s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteTime :: MonadIO m => EventTouchpadPinch -> Word32 -> m ()
+eventTouchpadPinchWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 28) (val :: Word32)
+
+data EventTouchpadPinchTimeFieldInfo
+instance AttrInfo EventTouchpadPinchTimeFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventTouchpadPinchTimeFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchTimeFieldInfo = Word32
+    type AttrLabel EventTouchpadPinchTimeFieldInfo = "time"
+    attrGet _ = eventTouchpadPinchReadTime
+    attrSet _ = eventTouchpadPinchWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchTime :: AttrLabelProxy "time"
+eventTouchpadPinchTime = AttrLabelProxy
+
+
+eventTouchpadPinchReadX :: MonadIO m => EventTouchpadPinch -> m Double
+eventTouchpadPinchReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadPinchReadY :: EventTouchpadPinch -> IO Double
-eventTouchpadPinchReadY s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteX :: MonadIO m => EventTouchpadPinch -> Double -> m ()
+eventTouchpadPinchWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 32) (val' :: CDouble)
+
+data EventTouchpadPinchXFieldInfo
+instance AttrInfo EventTouchpadPinchXFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchXFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadPinchXFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchXFieldInfo = Double
+    type AttrLabel EventTouchpadPinchXFieldInfo = "x"
+    attrGet _ = eventTouchpadPinchReadX
+    attrSet _ = eventTouchpadPinchWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchX :: AttrLabelProxy "x"
+eventTouchpadPinchX = AttrLabelProxy
+
+
+eventTouchpadPinchReadY :: MonadIO m => EventTouchpadPinch -> m Double
+eventTouchpadPinchReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadPinchReadDx :: EventTouchpadPinch -> IO Double
-eventTouchpadPinchReadDx s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteY :: MonadIO m => EventTouchpadPinch -> Double -> m ()
+eventTouchpadPinchWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 40) (val' :: CDouble)
+
+data EventTouchpadPinchYFieldInfo
+instance AttrInfo EventTouchpadPinchYFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchYFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadPinchYFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchYFieldInfo = Double
+    type AttrLabel EventTouchpadPinchYFieldInfo = "y"
+    attrGet _ = eventTouchpadPinchReadY
+    attrSet _ = eventTouchpadPinchWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchY :: AttrLabelProxy "y"
+eventTouchpadPinchY = AttrLabelProxy
+
+
+eventTouchpadPinchReadDx :: MonadIO m => EventTouchpadPinch -> m Double
+eventTouchpadPinchReadDx s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadPinchReadDy :: EventTouchpadPinch -> IO Double
-eventTouchpadPinchReadDy s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteDx :: MonadIO m => EventTouchpadPinch -> Double -> m ()
+eventTouchpadPinchWriteDx s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 48) (val' :: CDouble)
+
+data EventTouchpadPinchDxFieldInfo
+instance AttrInfo EventTouchpadPinchDxFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchDxFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchDxFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadPinchDxFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchDxFieldInfo = Double
+    type AttrLabel EventTouchpadPinchDxFieldInfo = "dx"
+    attrGet _ = eventTouchpadPinchReadDx
+    attrSet _ = eventTouchpadPinchWriteDx
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchDx :: AttrLabelProxy "dx"
+eventTouchpadPinchDx = AttrLabelProxy
+
+
+eventTouchpadPinchReadDy :: MonadIO m => EventTouchpadPinch -> m Double
+eventTouchpadPinchReadDy s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 56) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadPinchReadAngleDelta :: EventTouchpadPinch -> IO Double
-eventTouchpadPinchReadAngleDelta s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteDy :: MonadIO m => EventTouchpadPinch -> Double -> m ()
+eventTouchpadPinchWriteDy s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 56) (val' :: CDouble)
+
+data EventTouchpadPinchDyFieldInfo
+instance AttrInfo EventTouchpadPinchDyFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchDyFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchDyFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadPinchDyFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchDyFieldInfo = Double
+    type AttrLabel EventTouchpadPinchDyFieldInfo = "dy"
+    attrGet _ = eventTouchpadPinchReadDy
+    attrSet _ = eventTouchpadPinchWriteDy
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchDy :: AttrLabelProxy "dy"
+eventTouchpadPinchDy = AttrLabelProxy
+
+
+eventTouchpadPinchReadAngleDelta :: MonadIO m => EventTouchpadPinch -> m Double
+eventTouchpadPinchReadAngleDelta s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 64) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadPinchReadScale :: EventTouchpadPinch -> IO Double
-eventTouchpadPinchReadScale s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteAngleDelta :: MonadIO m => EventTouchpadPinch -> Double -> m ()
+eventTouchpadPinchWriteAngleDelta s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 64) (val' :: CDouble)
+
+data EventTouchpadPinchAngleDeltaFieldInfo
+instance AttrInfo EventTouchpadPinchAngleDeltaFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchAngleDeltaFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchAngleDeltaFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadPinchAngleDeltaFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchAngleDeltaFieldInfo = Double
+    type AttrLabel EventTouchpadPinchAngleDeltaFieldInfo = "angle_delta"
+    attrGet _ = eventTouchpadPinchReadAngleDelta
+    attrSet _ = eventTouchpadPinchWriteAngleDelta
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchAngleDelta :: AttrLabelProxy "angleDelta"
+eventTouchpadPinchAngleDelta = AttrLabelProxy
+
+
+eventTouchpadPinchReadScale :: MonadIO m => EventTouchpadPinch -> m Double
+eventTouchpadPinchReadScale s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 72) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadPinchReadXRoot :: EventTouchpadPinch -> IO Double
-eventTouchpadPinchReadXRoot s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteScale :: MonadIO m => EventTouchpadPinch -> Double -> m ()
+eventTouchpadPinchWriteScale s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 72) (val' :: CDouble)
+
+data EventTouchpadPinchScaleFieldInfo
+instance AttrInfo EventTouchpadPinchScaleFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchScaleFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchScaleFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadPinchScaleFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchScaleFieldInfo = Double
+    type AttrLabel EventTouchpadPinchScaleFieldInfo = "scale"
+    attrGet _ = eventTouchpadPinchReadScale
+    attrSet _ = eventTouchpadPinchWriteScale
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchScale :: AttrLabelProxy "scale"
+eventTouchpadPinchScale = AttrLabelProxy
+
+
+eventTouchpadPinchReadXRoot :: MonadIO m => EventTouchpadPinch -> m Double
+eventTouchpadPinchReadXRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 80) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadPinchReadYRoot :: EventTouchpadPinch -> IO Double
-eventTouchpadPinchReadYRoot s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteXRoot :: MonadIO m => EventTouchpadPinch -> Double -> m ()
+eventTouchpadPinchWriteXRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 80) (val' :: CDouble)
+
+data EventTouchpadPinchXRootFieldInfo
+instance AttrInfo EventTouchpadPinchXRootFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchXRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchXRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadPinchXRootFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchXRootFieldInfo = Double
+    type AttrLabel EventTouchpadPinchXRootFieldInfo = "x_root"
+    attrGet _ = eventTouchpadPinchReadXRoot
+    attrSet _ = eventTouchpadPinchWriteXRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchXRoot :: AttrLabelProxy "xRoot"
+eventTouchpadPinchXRoot = AttrLabelProxy
+
+
+eventTouchpadPinchReadYRoot :: MonadIO m => EventTouchpadPinch -> m Double
+eventTouchpadPinchReadYRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 88) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadPinchReadState :: EventTouchpadPinch -> IO [ModifierType]
-eventTouchpadPinchReadState s = withManagedPtr s $ \ptr -> do
+eventTouchpadPinchWriteYRoot :: MonadIO m => EventTouchpadPinch -> Double -> m ()
+eventTouchpadPinchWriteYRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 88) (val' :: CDouble)
+
+data EventTouchpadPinchYRootFieldInfo
+instance AttrInfo EventTouchpadPinchYRootFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchYRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchYRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadPinchYRootFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchYRootFieldInfo = Double
+    type AttrLabel EventTouchpadPinchYRootFieldInfo = "y_root"
+    attrGet _ = eventTouchpadPinchReadYRoot
+    attrSet _ = eventTouchpadPinchWriteYRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchYRoot :: AttrLabelProxy "yRoot"
+eventTouchpadPinchYRoot = AttrLabelProxy
+
+
+eventTouchpadPinchReadState :: MonadIO m => EventTouchpadPinch -> m [ModifierType]
+eventTouchpadPinchReadState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 96) :: IO CUInt
     let val' = wordToGFlags val
     return val'
+
+eventTouchpadPinchWriteState :: MonadIO m => EventTouchpadPinch -> [ModifierType] -> m ()
+eventTouchpadPinchWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = gflagsToWord val
+    poke (ptr `plusPtr` 96) (val' :: CUInt)
+
+data EventTouchpadPinchStateFieldInfo
+instance AttrInfo EventTouchpadPinchStateFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadPinchStateFieldInfo = (~) [ModifierType]
+    type AttrBaseTypeConstraint EventTouchpadPinchStateFieldInfo = (~) EventTouchpadPinch
+    type AttrGetType EventTouchpadPinchStateFieldInfo = [ModifierType]
+    type AttrLabel EventTouchpadPinchStateFieldInfo = "state"
+    attrGet _ = eventTouchpadPinchReadState
+    attrSet _ = eventTouchpadPinchWriteState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadPinchState :: AttrLabelProxy "state"
+eventTouchpadPinchState = AttrLabelProxy
+
+
+
+type instance AttributeList EventTouchpadPinch = EventTouchpadPinchAttributeList
+type EventTouchpadPinchAttributeList = ('[ '("type", EventTouchpadPinchTypeFieldInfo), '("window", EventTouchpadPinchWindowFieldInfo), '("sendEvent", EventTouchpadPinchSendEventFieldInfo), '("phase", EventTouchpadPinchPhaseFieldInfo), '("nFingers", EventTouchpadPinchNFingersFieldInfo), '("time", EventTouchpadPinchTimeFieldInfo), '("x", EventTouchpadPinchXFieldInfo), '("y", EventTouchpadPinchYFieldInfo), '("dx", EventTouchpadPinchDxFieldInfo), '("dy", EventTouchpadPinchDyFieldInfo), '("angleDelta", EventTouchpadPinchAngleDeltaFieldInfo), '("scale", EventTouchpadPinchScaleFieldInfo), '("xRoot", EventTouchpadPinchXRootFieldInfo), '("yRoot", EventTouchpadPinchYRootFieldInfo), '("state", EventTouchpadPinchStateFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventTouchpadPinchMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventTouchpadPinchMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventTouchpadPinch.hs-boot b/GI/Gdk/Structs/EventTouchpadPinch.hs-boot
--- a/GI/Gdk/Structs/EventTouchpadPinch.hs-boot
+++ b/GI/Gdk/Structs/EventTouchpadPinch.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventTouchpadPinch where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventTouchpadSwipe.hs b/GI/Gdk/Structs/EventTouchpadSwipe.hs
--- a/GI/Gdk/Structs/EventTouchpadSwipe.hs
+++ b/GI/Gdk/Structs/EventTouchpadSwipe.hs
@@ -19,64 +19,91 @@
 
  -- * Properties
 -- ** Dx
+    eventTouchpadSwipeDx                    ,
     eventTouchpadSwipeReadDx                ,
+    eventTouchpadSwipeWriteDx               ,
 
 
 -- ** Dy
+    eventTouchpadSwipeDy                    ,
     eventTouchpadSwipeReadDy                ,
+    eventTouchpadSwipeWriteDy               ,
 
 
 -- ** NFingers
+    eventTouchpadSwipeNFingers              ,
     eventTouchpadSwipeReadNFingers          ,
+    eventTouchpadSwipeWriteNFingers         ,
 
 
 -- ** Phase
+    eventTouchpadSwipePhase                 ,
     eventTouchpadSwipeReadPhase             ,
+    eventTouchpadSwipeWritePhase            ,
 
 
 -- ** SendEvent
     eventTouchpadSwipeReadSendEvent         ,
+    eventTouchpadSwipeSendEvent             ,
+    eventTouchpadSwipeWriteSendEvent        ,
 
 
 -- ** State
     eventTouchpadSwipeReadState             ,
+    eventTouchpadSwipeState                 ,
+    eventTouchpadSwipeWriteState            ,
 
 
 -- ** Time
     eventTouchpadSwipeReadTime              ,
+    eventTouchpadSwipeTime                  ,
+    eventTouchpadSwipeWriteTime             ,
 
 
 -- ** Type
     eventTouchpadSwipeReadType              ,
+    eventTouchpadSwipeType                  ,
+    eventTouchpadSwipeWriteType             ,
 
 
 -- ** Window
+    eventTouchpadSwipeClearWindow           ,
     eventTouchpadSwipeReadWindow            ,
+    eventTouchpadSwipeWindow                ,
+    eventTouchpadSwipeWriteWindow           ,
 
 
 -- ** X
     eventTouchpadSwipeReadX                 ,
+    eventTouchpadSwipeWriteX                ,
+    eventTouchpadSwipeX                     ,
 
 
 -- ** XRoot
     eventTouchpadSwipeReadXRoot             ,
+    eventTouchpadSwipeWriteXRoot            ,
+    eventTouchpadSwipeXRoot                 ,
 
 
 -- ** Y
     eventTouchpadSwipeReadY                 ,
+    eventTouchpadSwipeWriteY                ,
+    eventTouchpadSwipeY                     ,
 
 
 -- ** YRoot
     eventTouchpadSwipeReadYRoot             ,
+    eventTouchpadSwipeWriteYRoot            ,
+    eventTouchpadSwipeYRoot                 ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -89,83 +116,369 @@
 newZeroEventTouchpadSwipe :: MonadIO m => m EventTouchpadSwipe
 newZeroEventTouchpadSwipe = liftIO $ callocBytes 88 >>= wrapPtr EventTouchpadSwipe
 
+instance tag ~ 'AttrSet => Constructible EventTouchpadSwipe tag where
+    new _ attrs = do
+        o <- newZeroEventTouchpadSwipe
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventTouchpadSwipe :: Maybe EventTouchpadSwipe
 noEventTouchpadSwipe = Nothing
 
-eventTouchpadSwipeReadType :: EventTouchpadSwipe -> IO EventType
-eventTouchpadSwipeReadType s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeReadType :: MonadIO m => EventTouchpadSwipe -> m EventType
+eventTouchpadSwipeReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventTouchpadSwipeReadWindow :: EventTouchpadSwipe -> IO Window
-eventTouchpadSwipeReadWindow s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteType :: MonadIO m => EventTouchpadSwipe -> EventType -> m ()
+eventTouchpadSwipeWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventTouchpadSwipeTypeFieldInfo
+instance AttrInfo EventTouchpadSwipeTypeFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventTouchpadSwipeTypeFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeTypeFieldInfo = EventType
+    type AttrLabel EventTouchpadSwipeTypeFieldInfo = "type"
+    attrGet _ = eventTouchpadSwipeReadType
+    attrSet _ = eventTouchpadSwipeWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeType :: AttrLabelProxy "type"
+eventTouchpadSwipeType = AttrLabelProxy
+
+
+eventTouchpadSwipeReadWindow :: MonadIO m => EventTouchpadSwipe -> m (Maybe Window)
+eventTouchpadSwipeReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventTouchpadSwipeReadSendEvent :: EventTouchpadSwipe -> IO Int8
-eventTouchpadSwipeReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteWindow :: MonadIO m => EventTouchpadSwipe -> Ptr Window -> m ()
+eventTouchpadSwipeWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventTouchpadSwipeClearWindow :: MonadIO m => EventTouchpadSwipe -> m ()
+eventTouchpadSwipeClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventTouchpadSwipeWindowFieldInfo
+instance AttrInfo EventTouchpadSwipeWindowFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventTouchpadSwipeWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventTouchpadSwipeWindowFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeWindowFieldInfo = Maybe Window
+    type AttrLabel EventTouchpadSwipeWindowFieldInfo = "window"
+    attrGet _ = eventTouchpadSwipeReadWindow
+    attrSet _ = eventTouchpadSwipeWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventTouchpadSwipeClearWindow
+
+eventTouchpadSwipeWindow :: AttrLabelProxy "window"
+eventTouchpadSwipeWindow = AttrLabelProxy
+
+
+eventTouchpadSwipeReadSendEvent :: MonadIO m => EventTouchpadSwipe -> m Int8
+eventTouchpadSwipeReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventTouchpadSwipeReadPhase :: EventTouchpadSwipe -> IO TouchpadGesturePhase
-eventTouchpadSwipeReadPhase s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteSendEvent :: MonadIO m => EventTouchpadSwipe -> Int8 -> m ()
+eventTouchpadSwipeWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventTouchpadSwipeSendEventFieldInfo
+instance AttrInfo EventTouchpadSwipeSendEventFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventTouchpadSwipeSendEventFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeSendEventFieldInfo = Int8
+    type AttrLabel EventTouchpadSwipeSendEventFieldInfo = "send_event"
+    attrGet _ = eventTouchpadSwipeReadSendEvent
+    attrSet _ = eventTouchpadSwipeWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeSendEvent :: AttrLabelProxy "sendEvent"
+eventTouchpadSwipeSendEvent = AttrLabelProxy
+
+
+eventTouchpadSwipeReadPhase :: MonadIO m => EventTouchpadSwipe -> m TouchpadGesturePhase
+eventTouchpadSwipeReadPhase s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventTouchpadSwipeReadNFingers :: EventTouchpadSwipe -> IO Int8
-eventTouchpadSwipeReadNFingers s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWritePhase :: MonadIO m => EventTouchpadSwipe -> TouchpadGesturePhase -> m ()
+eventTouchpadSwipeWritePhase s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 20) (val' :: CUInt)
+
+data EventTouchpadSwipePhaseFieldInfo
+instance AttrInfo EventTouchpadSwipePhaseFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipePhaseFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipePhaseFieldInfo = (~) TouchpadGesturePhase
+    type AttrBaseTypeConstraint EventTouchpadSwipePhaseFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipePhaseFieldInfo = TouchpadGesturePhase
+    type AttrLabel EventTouchpadSwipePhaseFieldInfo = "phase"
+    attrGet _ = eventTouchpadSwipeReadPhase
+    attrSet _ = eventTouchpadSwipeWritePhase
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipePhase :: AttrLabelProxy "phase"
+eventTouchpadSwipePhase = AttrLabelProxy
+
+
+eventTouchpadSwipeReadNFingers :: MonadIO m => EventTouchpadSwipe -> m Int8
+eventTouchpadSwipeReadNFingers s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO Int8
     return val
 
-eventTouchpadSwipeReadTime :: EventTouchpadSwipe -> IO Word32
-eventTouchpadSwipeReadTime s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteNFingers :: MonadIO m => EventTouchpadSwipe -> Int8 -> m ()
+eventTouchpadSwipeWriteNFingers s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Int8)
+
+data EventTouchpadSwipeNFingersFieldInfo
+instance AttrInfo EventTouchpadSwipeNFingersFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeNFingersFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeNFingersFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventTouchpadSwipeNFingersFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeNFingersFieldInfo = Int8
+    type AttrLabel EventTouchpadSwipeNFingersFieldInfo = "n_fingers"
+    attrGet _ = eventTouchpadSwipeReadNFingers
+    attrSet _ = eventTouchpadSwipeWriteNFingers
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeNFingers :: AttrLabelProxy "nFingers"
+eventTouchpadSwipeNFingers = AttrLabelProxy
+
+
+eventTouchpadSwipeReadTime :: MonadIO m => EventTouchpadSwipe -> m Word32
+eventTouchpadSwipeReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 28) :: IO Word32
     return val
 
-eventTouchpadSwipeReadX :: EventTouchpadSwipe -> IO Double
-eventTouchpadSwipeReadX s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteTime :: MonadIO m => EventTouchpadSwipe -> Word32 -> m ()
+eventTouchpadSwipeWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 28) (val :: Word32)
+
+data EventTouchpadSwipeTimeFieldInfo
+instance AttrInfo EventTouchpadSwipeTimeFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint EventTouchpadSwipeTimeFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeTimeFieldInfo = Word32
+    type AttrLabel EventTouchpadSwipeTimeFieldInfo = "time"
+    attrGet _ = eventTouchpadSwipeReadTime
+    attrSet _ = eventTouchpadSwipeWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeTime :: AttrLabelProxy "time"
+eventTouchpadSwipeTime = AttrLabelProxy
+
+
+eventTouchpadSwipeReadX :: MonadIO m => EventTouchpadSwipe -> m Double
+eventTouchpadSwipeReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadSwipeReadY :: EventTouchpadSwipe -> IO Double
-eventTouchpadSwipeReadY s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteX :: MonadIO m => EventTouchpadSwipe -> Double -> m ()
+eventTouchpadSwipeWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 32) (val' :: CDouble)
+
+data EventTouchpadSwipeXFieldInfo
+instance AttrInfo EventTouchpadSwipeXFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeXFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadSwipeXFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeXFieldInfo = Double
+    type AttrLabel EventTouchpadSwipeXFieldInfo = "x"
+    attrGet _ = eventTouchpadSwipeReadX
+    attrSet _ = eventTouchpadSwipeWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeX :: AttrLabelProxy "x"
+eventTouchpadSwipeX = AttrLabelProxy
+
+
+eventTouchpadSwipeReadY :: MonadIO m => EventTouchpadSwipe -> m Double
+eventTouchpadSwipeReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadSwipeReadDx :: EventTouchpadSwipe -> IO Double
-eventTouchpadSwipeReadDx s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteY :: MonadIO m => EventTouchpadSwipe -> Double -> m ()
+eventTouchpadSwipeWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 40) (val' :: CDouble)
+
+data EventTouchpadSwipeYFieldInfo
+instance AttrInfo EventTouchpadSwipeYFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeYFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadSwipeYFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeYFieldInfo = Double
+    type AttrLabel EventTouchpadSwipeYFieldInfo = "y"
+    attrGet _ = eventTouchpadSwipeReadY
+    attrSet _ = eventTouchpadSwipeWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeY :: AttrLabelProxy "y"
+eventTouchpadSwipeY = AttrLabelProxy
+
+
+eventTouchpadSwipeReadDx :: MonadIO m => EventTouchpadSwipe -> m Double
+eventTouchpadSwipeReadDx s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadSwipeReadDy :: EventTouchpadSwipe -> IO Double
-eventTouchpadSwipeReadDy s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteDx :: MonadIO m => EventTouchpadSwipe -> Double -> m ()
+eventTouchpadSwipeWriteDx s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 48) (val' :: CDouble)
+
+data EventTouchpadSwipeDxFieldInfo
+instance AttrInfo EventTouchpadSwipeDxFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeDxFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeDxFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadSwipeDxFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeDxFieldInfo = Double
+    type AttrLabel EventTouchpadSwipeDxFieldInfo = "dx"
+    attrGet _ = eventTouchpadSwipeReadDx
+    attrSet _ = eventTouchpadSwipeWriteDx
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeDx :: AttrLabelProxy "dx"
+eventTouchpadSwipeDx = AttrLabelProxy
+
+
+eventTouchpadSwipeReadDy :: MonadIO m => EventTouchpadSwipe -> m Double
+eventTouchpadSwipeReadDy s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 56) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadSwipeReadXRoot :: EventTouchpadSwipe -> IO Double
-eventTouchpadSwipeReadXRoot s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteDy :: MonadIO m => EventTouchpadSwipe -> Double -> m ()
+eventTouchpadSwipeWriteDy s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 56) (val' :: CDouble)
+
+data EventTouchpadSwipeDyFieldInfo
+instance AttrInfo EventTouchpadSwipeDyFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeDyFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeDyFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadSwipeDyFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeDyFieldInfo = Double
+    type AttrLabel EventTouchpadSwipeDyFieldInfo = "dy"
+    attrGet _ = eventTouchpadSwipeReadDy
+    attrSet _ = eventTouchpadSwipeWriteDy
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeDy :: AttrLabelProxy "dy"
+eventTouchpadSwipeDy = AttrLabelProxy
+
+
+eventTouchpadSwipeReadXRoot :: MonadIO m => EventTouchpadSwipe -> m Double
+eventTouchpadSwipeReadXRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 64) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadSwipeReadYRoot :: EventTouchpadSwipe -> IO Double
-eventTouchpadSwipeReadYRoot s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteXRoot :: MonadIO m => EventTouchpadSwipe -> Double -> m ()
+eventTouchpadSwipeWriteXRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 64) (val' :: CDouble)
+
+data EventTouchpadSwipeXRootFieldInfo
+instance AttrInfo EventTouchpadSwipeXRootFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeXRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeXRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadSwipeXRootFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeXRootFieldInfo = Double
+    type AttrLabel EventTouchpadSwipeXRootFieldInfo = "x_root"
+    attrGet _ = eventTouchpadSwipeReadXRoot
+    attrSet _ = eventTouchpadSwipeWriteXRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeXRoot :: AttrLabelProxy "xRoot"
+eventTouchpadSwipeXRoot = AttrLabelProxy
+
+
+eventTouchpadSwipeReadYRoot :: MonadIO m => EventTouchpadSwipe -> m Double
+eventTouchpadSwipeReadYRoot s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 72) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-eventTouchpadSwipeReadState :: EventTouchpadSwipe -> IO [ModifierType]
-eventTouchpadSwipeReadState s = withManagedPtr s $ \ptr -> do
+eventTouchpadSwipeWriteYRoot :: MonadIO m => EventTouchpadSwipe -> Double -> m ()
+eventTouchpadSwipeWriteYRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 72) (val' :: CDouble)
+
+data EventTouchpadSwipeYRootFieldInfo
+instance AttrInfo EventTouchpadSwipeYRootFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeYRootFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeYRootFieldInfo = (~) Double
+    type AttrBaseTypeConstraint EventTouchpadSwipeYRootFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeYRootFieldInfo = Double
+    type AttrLabel EventTouchpadSwipeYRootFieldInfo = "y_root"
+    attrGet _ = eventTouchpadSwipeReadYRoot
+    attrSet _ = eventTouchpadSwipeWriteYRoot
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeYRoot :: AttrLabelProxy "yRoot"
+eventTouchpadSwipeYRoot = AttrLabelProxy
+
+
+eventTouchpadSwipeReadState :: MonadIO m => EventTouchpadSwipe -> m [ModifierType]
+eventTouchpadSwipeReadState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 80) :: IO CUInt
     let val' = wordToGFlags val
     return val'
+
+eventTouchpadSwipeWriteState :: MonadIO m => EventTouchpadSwipe -> [ModifierType] -> m ()
+eventTouchpadSwipeWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = gflagsToWord val
+    poke (ptr `plusPtr` 80) (val' :: CUInt)
+
+data EventTouchpadSwipeStateFieldInfo
+instance AttrInfo EventTouchpadSwipeStateFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTouchpadSwipeStateFieldInfo = (~) [ModifierType]
+    type AttrBaseTypeConstraint EventTouchpadSwipeStateFieldInfo = (~) EventTouchpadSwipe
+    type AttrGetType EventTouchpadSwipeStateFieldInfo = [ModifierType]
+    type AttrLabel EventTouchpadSwipeStateFieldInfo = "state"
+    attrGet _ = eventTouchpadSwipeReadState
+    attrSet _ = eventTouchpadSwipeWriteState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventTouchpadSwipeState :: AttrLabelProxy "state"
+eventTouchpadSwipeState = AttrLabelProxy
+
+
+
+type instance AttributeList EventTouchpadSwipe = EventTouchpadSwipeAttributeList
+type EventTouchpadSwipeAttributeList = ('[ '("type", EventTouchpadSwipeTypeFieldInfo), '("window", EventTouchpadSwipeWindowFieldInfo), '("sendEvent", EventTouchpadSwipeSendEventFieldInfo), '("phase", EventTouchpadSwipePhaseFieldInfo), '("nFingers", EventTouchpadSwipeNFingersFieldInfo), '("time", EventTouchpadSwipeTimeFieldInfo), '("x", EventTouchpadSwipeXFieldInfo), '("y", EventTouchpadSwipeYFieldInfo), '("dx", EventTouchpadSwipeDxFieldInfo), '("dy", EventTouchpadSwipeDyFieldInfo), '("xRoot", EventTouchpadSwipeXRootFieldInfo), '("yRoot", EventTouchpadSwipeYRootFieldInfo), '("state", EventTouchpadSwipeStateFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventTouchpadSwipeMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventTouchpadSwipeMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventTouchpadSwipe.hs-boot b/GI/Gdk/Structs/EventTouchpadSwipe.hs-boot
--- a/GI/Gdk/Structs/EventTouchpadSwipe.hs-boot
+++ b/GI/Gdk/Structs/EventTouchpadSwipe.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventTouchpadSwipe where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventVisibility.hs b/GI/Gdk/Structs/EventVisibility.hs
--- a/GI/Gdk/Structs/EventVisibility.hs
+++ b/GI/Gdk/Structs/EventVisibility.hs
@@ -20,27 +20,36 @@
  -- * Properties
 -- ** SendEvent
     eventVisibilityReadSendEvent            ,
+    eventVisibilitySendEvent                ,
+    eventVisibilityWriteSendEvent           ,
 
 
 -- ** State
     eventVisibilityReadState                ,
+    eventVisibilityState                    ,
+    eventVisibilityWriteState               ,
 
 
 -- ** Type
     eventVisibilityReadType                 ,
+    eventVisibilityType                     ,
+    eventVisibilityWriteType                ,
 
 
 -- ** Window
+    eventVisibilityClearWindow              ,
     eventVisibilityReadWindow               ,
+    eventVisibilityWindow                   ,
+    eventVisibilityWriteWindow              ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -53,31 +62,130 @@
 newZeroEventVisibility :: MonadIO m => m EventVisibility
 newZeroEventVisibility = liftIO $ callocBytes 24 >>= wrapPtr EventVisibility
 
+instance tag ~ 'AttrSet => Constructible EventVisibility tag where
+    new _ attrs = do
+        o <- newZeroEventVisibility
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventVisibility :: Maybe EventVisibility
 noEventVisibility = Nothing
 
-eventVisibilityReadType :: EventVisibility -> IO EventType
-eventVisibilityReadType s = withManagedPtr s $ \ptr -> do
+eventVisibilityReadType :: MonadIO m => EventVisibility -> m EventType
+eventVisibilityReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventVisibilityReadWindow :: EventVisibility -> IO Window
-eventVisibilityReadWindow s = withManagedPtr s $ \ptr -> do
+eventVisibilityWriteType :: MonadIO m => EventVisibility -> EventType -> m ()
+eventVisibilityWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventVisibilityTypeFieldInfo
+instance AttrInfo EventVisibilityTypeFieldInfo where
+    type AttrAllowedOps EventVisibilityTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventVisibilityTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventVisibilityTypeFieldInfo = (~) EventVisibility
+    type AttrGetType EventVisibilityTypeFieldInfo = EventType
+    type AttrLabel EventVisibilityTypeFieldInfo = "type"
+    attrGet _ = eventVisibilityReadType
+    attrSet _ = eventVisibilityWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventVisibilityType :: AttrLabelProxy "type"
+eventVisibilityType = AttrLabelProxy
+
+
+eventVisibilityReadWindow :: MonadIO m => EventVisibility -> m (Maybe Window)
+eventVisibilityReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventVisibilityReadSendEvent :: EventVisibility -> IO Int8
-eventVisibilityReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventVisibilityWriteWindow :: MonadIO m => EventVisibility -> Ptr Window -> m ()
+eventVisibilityWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventVisibilityClearWindow :: MonadIO m => EventVisibility -> m ()
+eventVisibilityClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventVisibilityWindowFieldInfo
+instance AttrInfo EventVisibilityWindowFieldInfo where
+    type AttrAllowedOps EventVisibilityWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventVisibilityWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventVisibilityWindowFieldInfo = (~) EventVisibility
+    type AttrGetType EventVisibilityWindowFieldInfo = Maybe Window
+    type AttrLabel EventVisibilityWindowFieldInfo = "window"
+    attrGet _ = eventVisibilityReadWindow
+    attrSet _ = eventVisibilityWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventVisibilityClearWindow
+
+eventVisibilityWindow :: AttrLabelProxy "window"
+eventVisibilityWindow = AttrLabelProxy
+
+
+eventVisibilityReadSendEvent :: MonadIO m => EventVisibility -> m Int8
+eventVisibilityReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventVisibilityReadState :: EventVisibility -> IO VisibilityState
-eventVisibilityReadState s = withManagedPtr s $ \ptr -> do
+eventVisibilityWriteSendEvent :: MonadIO m => EventVisibility -> Int8 -> m ()
+eventVisibilityWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventVisibilitySendEventFieldInfo
+instance AttrInfo EventVisibilitySendEventFieldInfo where
+    type AttrAllowedOps EventVisibilitySendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventVisibilitySendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventVisibilitySendEventFieldInfo = (~) EventVisibility
+    type AttrGetType EventVisibilitySendEventFieldInfo = Int8
+    type AttrLabel EventVisibilitySendEventFieldInfo = "send_event"
+    attrGet _ = eventVisibilityReadSendEvent
+    attrSet _ = eventVisibilityWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventVisibilitySendEvent :: AttrLabelProxy "sendEvent"
+eventVisibilitySendEvent = AttrLabelProxy
+
+
+eventVisibilityReadState :: MonadIO m => EventVisibility -> m VisibilityState
+eventVisibilityReadState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
+
+eventVisibilityWriteState :: MonadIO m => EventVisibility -> VisibilityState -> m ()
+eventVisibilityWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 20) (val' :: CUInt)
+
+data EventVisibilityStateFieldInfo
+instance AttrInfo EventVisibilityStateFieldInfo where
+    type AttrAllowedOps EventVisibilityStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventVisibilityStateFieldInfo = (~) VisibilityState
+    type AttrBaseTypeConstraint EventVisibilityStateFieldInfo = (~) EventVisibility
+    type AttrGetType EventVisibilityStateFieldInfo = VisibilityState
+    type AttrLabel EventVisibilityStateFieldInfo = "state"
+    attrGet _ = eventVisibilityReadState
+    attrSet _ = eventVisibilityWriteState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventVisibilityState :: AttrLabelProxy "state"
+eventVisibilityState = AttrLabelProxy
+
+
+
+type instance AttributeList EventVisibility = EventVisibilityAttributeList
+type EventVisibilityAttributeList = ('[ '("type", EventVisibilityTypeFieldInfo), '("window", EventVisibilityWindowFieldInfo), '("sendEvent", EventVisibilitySendEventFieldInfo), '("state", EventVisibilityStateFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventVisibilityMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventVisibilityMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventVisibility.hs-boot b/GI/Gdk/Structs/EventVisibility.hs-boot
--- a/GI/Gdk/Structs/EventVisibility.hs-boot
+++ b/GI/Gdk/Structs/EventVisibility.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventVisibility where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/EventWindowState.hs b/GI/Gdk/Structs/EventWindowState.hs
--- a/GI/Gdk/Structs/EventWindowState.hs
+++ b/GI/Gdk/Structs/EventWindowState.hs
@@ -19,32 +19,43 @@
 
  -- * Properties
 -- ** ChangedMask
+    eventWindowStateChangedMask             ,
     eventWindowStateReadChangedMask         ,
+    eventWindowStateWriteChangedMask        ,
 
 
 -- ** NewWindowState
+    eventWindowStateNewWindowState          ,
     eventWindowStateReadNewWindowState      ,
+    eventWindowStateWriteNewWindowState     ,
 
 
 -- ** SendEvent
     eventWindowStateReadSendEvent           ,
+    eventWindowStateSendEvent               ,
+    eventWindowStateWriteSendEvent          ,
 
 
 -- ** Type
     eventWindowStateReadType                ,
+    eventWindowStateType                    ,
+    eventWindowStateWriteType               ,
 
 
 -- ** Window
+    eventWindowStateClearWindow             ,
     eventWindowStateReadWindow              ,
+    eventWindowStateWindow                  ,
+    eventWindowStateWriteWindow             ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -57,37 +68,157 @@
 newZeroEventWindowState :: MonadIO m => m EventWindowState
 newZeroEventWindowState = liftIO $ callocBytes 32 >>= wrapPtr EventWindowState
 
+instance tag ~ 'AttrSet => Constructible EventWindowState tag where
+    new _ attrs = do
+        o <- newZeroEventWindowState
+        GI.Attributes.set o attrs
+        return o
+
+
 noEventWindowState :: Maybe EventWindowState
 noEventWindowState = Nothing
 
-eventWindowStateReadType :: EventWindowState -> IO EventType
-eventWindowStateReadType s = withManagedPtr s $ \ptr -> do
+eventWindowStateReadType :: MonadIO m => EventWindowState -> m EventType
+eventWindowStateReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventWindowStateReadWindow :: EventWindowState -> IO Window
-eventWindowStateReadWindow s = withManagedPtr s $ \ptr -> do
+eventWindowStateWriteType :: MonadIO m => EventWindowState -> EventType -> m ()
+eventWindowStateWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventWindowStateTypeFieldInfo
+instance AttrInfo EventWindowStateTypeFieldInfo where
+    type AttrAllowedOps EventWindowStateTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventWindowStateTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventWindowStateTypeFieldInfo = (~) EventWindowState
+    type AttrGetType EventWindowStateTypeFieldInfo = EventType
+    type AttrLabel EventWindowStateTypeFieldInfo = "type"
+    attrGet _ = eventWindowStateReadType
+    attrSet _ = eventWindowStateWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventWindowStateType :: AttrLabelProxy "type"
+eventWindowStateType = AttrLabelProxy
+
+
+eventWindowStateReadWindow :: MonadIO m => EventWindowState -> m (Maybe Window)
+eventWindowStateReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
-    val' <- (newObject Window) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Window) val'
+        return val''
+    return result
 
-eventWindowStateReadSendEvent :: EventWindowState -> IO Int8
-eventWindowStateReadSendEvent s = withManagedPtr s $ \ptr -> do
+eventWindowStateWriteWindow :: MonadIO m => EventWindowState -> Ptr Window -> m ()
+eventWindowStateWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr Window)
+
+eventWindowStateClearWindow :: MonadIO m => EventWindowState -> m ()
+eventWindowStateClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
+
+data EventWindowStateWindowFieldInfo
+instance AttrInfo EventWindowStateWindowFieldInfo where
+    type AttrAllowedOps EventWindowStateWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventWindowStateWindowFieldInfo = (~) (Ptr Window)
+    type AttrBaseTypeConstraint EventWindowStateWindowFieldInfo = (~) EventWindowState
+    type AttrGetType EventWindowStateWindowFieldInfo = Maybe Window
+    type AttrLabel EventWindowStateWindowFieldInfo = "window"
+    attrGet _ = eventWindowStateReadWindow
+    attrSet _ = eventWindowStateWriteWindow
+    attrConstruct = undefined
+    attrClear _ = eventWindowStateClearWindow
+
+eventWindowStateWindow :: AttrLabelProxy "window"
+eventWindowStateWindow = AttrLabelProxy
+
+
+eventWindowStateReadSendEvent :: MonadIO m => EventWindowState -> m Int8
+eventWindowStateReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int8
     return val
 
-eventWindowStateReadChangedMask :: EventWindowState -> IO [WindowState]
-eventWindowStateReadChangedMask s = withManagedPtr s $ \ptr -> do
+eventWindowStateWriteSendEvent :: MonadIO m => EventWindowState -> Int8 -> m ()
+eventWindowStateWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int8)
+
+data EventWindowStateSendEventFieldInfo
+instance AttrInfo EventWindowStateSendEventFieldInfo where
+    type AttrAllowedOps EventWindowStateSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventWindowStateSendEventFieldInfo = (~) Int8
+    type AttrBaseTypeConstraint EventWindowStateSendEventFieldInfo = (~) EventWindowState
+    type AttrGetType EventWindowStateSendEventFieldInfo = Int8
+    type AttrLabel EventWindowStateSendEventFieldInfo = "send_event"
+    attrGet _ = eventWindowStateReadSendEvent
+    attrSet _ = eventWindowStateWriteSendEvent
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventWindowStateSendEvent :: AttrLabelProxy "sendEvent"
+eventWindowStateSendEvent = AttrLabelProxy
+
+
+eventWindowStateReadChangedMask :: MonadIO m => EventWindowState -> m [WindowState]
+eventWindowStateReadChangedMask s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO CUInt
     let val' = wordToGFlags val
     return val'
 
-eventWindowStateReadNewWindowState :: EventWindowState -> IO [WindowState]
-eventWindowStateReadNewWindowState s = withManagedPtr s $ \ptr -> do
+eventWindowStateWriteChangedMask :: MonadIO m => EventWindowState -> [WindowState] -> m ()
+eventWindowStateWriteChangedMask s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = gflagsToWord val
+    poke (ptr `plusPtr` 20) (val' :: CUInt)
+
+data EventWindowStateChangedMaskFieldInfo
+instance AttrInfo EventWindowStateChangedMaskFieldInfo where
+    type AttrAllowedOps EventWindowStateChangedMaskFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventWindowStateChangedMaskFieldInfo = (~) [WindowState]
+    type AttrBaseTypeConstraint EventWindowStateChangedMaskFieldInfo = (~) EventWindowState
+    type AttrGetType EventWindowStateChangedMaskFieldInfo = [WindowState]
+    type AttrLabel EventWindowStateChangedMaskFieldInfo = "changed_mask"
+    attrGet _ = eventWindowStateReadChangedMask
+    attrSet _ = eventWindowStateWriteChangedMask
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventWindowStateChangedMask :: AttrLabelProxy "changedMask"
+eventWindowStateChangedMask = AttrLabelProxy
+
+
+eventWindowStateReadNewWindowState :: MonadIO m => EventWindowState -> m [WindowState]
+eventWindowStateReadNewWindowState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO CUInt
     let val' = wordToGFlags val
     return val'
+
+eventWindowStateWriteNewWindowState :: MonadIO m => EventWindowState -> [WindowState] -> m ()
+eventWindowStateWriteNewWindowState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = gflagsToWord val
+    poke (ptr `plusPtr` 24) (val' :: CUInt)
+
+data EventWindowStateNewWindowStateFieldInfo
+instance AttrInfo EventWindowStateNewWindowStateFieldInfo where
+    type AttrAllowedOps EventWindowStateNewWindowStateFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventWindowStateNewWindowStateFieldInfo = (~) [WindowState]
+    type AttrBaseTypeConstraint EventWindowStateNewWindowStateFieldInfo = (~) EventWindowState
+    type AttrGetType EventWindowStateNewWindowStateFieldInfo = [WindowState]
+    type AttrLabel EventWindowStateNewWindowStateFieldInfo = "new_window_state"
+    attrGet _ = eventWindowStateReadNewWindowState
+    attrSet _ = eventWindowStateWriteNewWindowState
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventWindowStateNewWindowState :: AttrLabelProxy "newWindowState"
+eventWindowStateNewWindowState = AttrLabelProxy
+
+
+
+type instance AttributeList EventWindowState = EventWindowStateAttributeList
+type EventWindowStateAttributeList = ('[ '("type", EventWindowStateTypeFieldInfo), '("window", EventWindowStateWindowFieldInfo), '("sendEvent", EventWindowStateSendEventFieldInfo), '("changedMask", EventWindowStateChangedMaskFieldInfo), '("newWindowState", EventWindowStateNewWindowStateFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEventWindowStateMethod (t :: Symbol) (o :: *) :: * where
     ResolveEventWindowStateMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/EventWindowState.hs-boot b/GI/Gdk/Structs/EventWindowState.hs-boot
--- a/GI/Gdk/Structs/EventWindowState.hs-boot
+++ b/GI/Gdk/Structs/EventWindowState.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.EventWindowState where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/FrameTimings.hs b/GI/Gdk/Structs/FrameTimings.hs
--- a/GI/Gdk/Structs/FrameTimings.hs
+++ b/GI/Gdk/Structs/FrameTimings.hs
@@ -66,9 +66,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -86,11 +86,15 @@
 noFrameTimings :: Maybe FrameTimings
 noFrameTimings = Nothing
 
+
+type instance AttributeList FrameTimings = FrameTimingsAttributeList
+type FrameTimingsAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method FrameTimings::get_complete
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -118,7 +122,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt64
+-- returnType : Just (TBasicType TInt64)
 -- throws : False
 -- Skip return : False
 
@@ -145,7 +149,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt64
+-- returnType : Just (TBasicType TInt64)
 -- throws : False
 -- Skip return : False
 
@@ -172,7 +176,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt64
+-- returnType : Just (TBasicType TInt64)
 -- throws : False
 -- Skip return : False
 
@@ -199,7 +203,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt64
+-- returnType : Just (TBasicType TInt64)
 -- throws : False
 -- Skip return : False
 
@@ -226,7 +230,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt64
+-- returnType : Just (TBasicType TInt64)
 -- throws : False
 -- Skip return : False
 
@@ -253,7 +257,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "FrameTimings"
+-- returnType : Just (TInterface "Gdk" "FrameTimings")
 -- throws : False
 -- Skip return : False
 
@@ -282,7 +286,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Structs/FrameTimings.hs-boot b/GI/Gdk/Structs/FrameTimings.hs-boot
--- a/GI/Gdk/Structs/FrameTimings.hs-boot
+++ b/GI/Gdk/Structs/FrameTimings.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.FrameTimings where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/Geometry.hs b/GI/Gdk/Structs/Geometry.hs
--- a/GI/Gdk/Structs/Geometry.hs
+++ b/GI/Gdk/Structs/Geometry.hs
@@ -73,56 +73,78 @@
 
  -- * Properties
 -- ** BaseHeight
+    geometryBaseHeight                      ,
     geometryReadBaseHeight                  ,
+    geometryWriteBaseHeight                 ,
 
 
 -- ** BaseWidth
+    geometryBaseWidth                       ,
     geometryReadBaseWidth                   ,
+    geometryWriteBaseWidth                  ,
 
 
 -- ** HeightInc
+    geometryHeightInc                       ,
     geometryReadHeightInc                   ,
+    geometryWriteHeightInc                  ,
 
 
 -- ** MaxAspect
+    geometryMaxAspect                       ,
     geometryReadMaxAspect                   ,
+    geometryWriteMaxAspect                  ,
 
 
 -- ** MaxHeight
+    geometryMaxHeight                       ,
     geometryReadMaxHeight                   ,
+    geometryWriteMaxHeight                  ,
 
 
 -- ** MaxWidth
+    geometryMaxWidth                        ,
     geometryReadMaxWidth                    ,
+    geometryWriteMaxWidth                   ,
 
 
 -- ** MinAspect
+    geometryMinAspect                       ,
     geometryReadMinAspect                   ,
+    geometryWriteMinAspect                  ,
 
 
 -- ** MinHeight
+    geometryMinHeight                       ,
     geometryReadMinHeight                   ,
+    geometryWriteMinHeight                  ,
 
 
 -- ** MinWidth
+    geometryMinWidth                        ,
     geometryReadMinWidth                    ,
+    geometryWriteMinWidth                   ,
 
 
 -- ** WidthInc
     geometryReadWidthInc                    ,
+    geometryWidthInc                        ,
+    geometryWriteWidthInc                   ,
 
 
 -- ** WinGravity
     geometryReadWinGravity                  ,
+    geometryWinGravity                      ,
+    geometryWriteWinGravity                 ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -135,66 +157,300 @@
 newZeroGeometry :: MonadIO m => m Geometry
 newZeroGeometry = liftIO $ callocBytes 56 >>= wrapPtr Geometry
 
+instance tag ~ 'AttrSet => Constructible Geometry tag where
+    new _ attrs = do
+        o <- newZeroGeometry
+        GI.Attributes.set o attrs
+        return o
+
+
 noGeometry :: Maybe Geometry
 noGeometry = Nothing
 
-geometryReadMinWidth :: Geometry -> IO Int32
-geometryReadMinWidth s = withManagedPtr s $ \ptr -> do
+geometryReadMinWidth :: MonadIO m => Geometry -> m Int32
+geometryReadMinWidth s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int32
     return val
 
-geometryReadMinHeight :: Geometry -> IO Int32
-geometryReadMinHeight s = withManagedPtr s $ \ptr -> do
+geometryWriteMinWidth :: MonadIO m => Geometry -> Int32 -> m ()
+geometryWriteMinWidth s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int32)
+
+data GeometryMinWidthFieldInfo
+instance AttrInfo GeometryMinWidthFieldInfo where
+    type AttrAllowedOps GeometryMinWidthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryMinWidthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GeometryMinWidthFieldInfo = (~) Geometry
+    type AttrGetType GeometryMinWidthFieldInfo = Int32
+    type AttrLabel GeometryMinWidthFieldInfo = "min_width"
+    attrGet _ = geometryReadMinWidth
+    attrSet _ = geometryWriteMinWidth
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryMinWidth :: AttrLabelProxy "minWidth"
+geometryMinWidth = AttrLabelProxy
+
+
+geometryReadMinHeight :: MonadIO m => Geometry -> m Int32
+geometryReadMinHeight s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO Int32
     return val
 
-geometryReadMaxWidth :: Geometry -> IO Int32
-geometryReadMaxWidth s = withManagedPtr s $ \ptr -> do
+geometryWriteMinHeight :: MonadIO m => Geometry -> Int32 -> m ()
+geometryWriteMinHeight s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (val :: Int32)
+
+data GeometryMinHeightFieldInfo
+instance AttrInfo GeometryMinHeightFieldInfo where
+    type AttrAllowedOps GeometryMinHeightFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryMinHeightFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GeometryMinHeightFieldInfo = (~) Geometry
+    type AttrGetType GeometryMinHeightFieldInfo = Int32
+    type AttrLabel GeometryMinHeightFieldInfo = "min_height"
+    attrGet _ = geometryReadMinHeight
+    attrSet _ = geometryWriteMinHeight
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryMinHeight :: AttrLabelProxy "minHeight"
+geometryMinHeight = AttrLabelProxy
+
+
+geometryReadMaxWidth :: MonadIO m => Geometry -> m Int32
+geometryReadMaxWidth s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Int32
     return val
 
-geometryReadMaxHeight :: Geometry -> IO Int32
-geometryReadMaxHeight s = withManagedPtr s $ \ptr -> do
+geometryWriteMaxWidth :: MonadIO m => Geometry -> Int32 -> m ()
+geometryWriteMaxWidth s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Int32)
+
+data GeometryMaxWidthFieldInfo
+instance AttrInfo GeometryMaxWidthFieldInfo where
+    type AttrAllowedOps GeometryMaxWidthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryMaxWidthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GeometryMaxWidthFieldInfo = (~) Geometry
+    type AttrGetType GeometryMaxWidthFieldInfo = Int32
+    type AttrLabel GeometryMaxWidthFieldInfo = "max_width"
+    attrGet _ = geometryReadMaxWidth
+    attrSet _ = geometryWriteMaxWidth
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryMaxWidth :: AttrLabelProxy "maxWidth"
+geometryMaxWidth = AttrLabelProxy
+
+
+geometryReadMaxHeight :: MonadIO m => Geometry -> m Int32
+geometryReadMaxHeight s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 12) :: IO Int32
     return val
 
-geometryReadBaseWidth :: Geometry -> IO Int32
-geometryReadBaseWidth s = withManagedPtr s $ \ptr -> do
+geometryWriteMaxHeight :: MonadIO m => Geometry -> Int32 -> m ()
+geometryWriteMaxHeight s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 12) (val :: Int32)
+
+data GeometryMaxHeightFieldInfo
+instance AttrInfo GeometryMaxHeightFieldInfo where
+    type AttrAllowedOps GeometryMaxHeightFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryMaxHeightFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GeometryMaxHeightFieldInfo = (~) Geometry
+    type AttrGetType GeometryMaxHeightFieldInfo = Int32
+    type AttrLabel GeometryMaxHeightFieldInfo = "max_height"
+    attrGet _ = geometryReadMaxHeight
+    attrSet _ = geometryWriteMaxHeight
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryMaxHeight :: AttrLabelProxy "maxHeight"
+geometryMaxHeight = AttrLabelProxy
+
+
+geometryReadBaseWidth :: MonadIO m => Geometry -> m Int32
+geometryReadBaseWidth s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int32
     return val
 
-geometryReadBaseHeight :: Geometry -> IO Int32
-geometryReadBaseHeight s = withManagedPtr s $ \ptr -> do
+geometryWriteBaseWidth :: MonadIO m => Geometry -> Int32 -> m ()
+geometryWriteBaseWidth s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int32)
+
+data GeometryBaseWidthFieldInfo
+instance AttrInfo GeometryBaseWidthFieldInfo where
+    type AttrAllowedOps GeometryBaseWidthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryBaseWidthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GeometryBaseWidthFieldInfo = (~) Geometry
+    type AttrGetType GeometryBaseWidthFieldInfo = Int32
+    type AttrLabel GeometryBaseWidthFieldInfo = "base_width"
+    attrGet _ = geometryReadBaseWidth
+    attrSet _ = geometryWriteBaseWidth
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryBaseWidth :: AttrLabelProxy "baseWidth"
+geometryBaseWidth = AttrLabelProxy
+
+
+geometryReadBaseHeight :: MonadIO m => Geometry -> m Int32
+geometryReadBaseHeight s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Int32
     return val
 
-geometryReadWidthInc :: Geometry -> IO Int32
-geometryReadWidthInc s = withManagedPtr s $ \ptr -> do
+geometryWriteBaseHeight :: MonadIO m => Geometry -> Int32 -> m ()
+geometryWriteBaseHeight s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Int32)
+
+data GeometryBaseHeightFieldInfo
+instance AttrInfo GeometryBaseHeightFieldInfo where
+    type AttrAllowedOps GeometryBaseHeightFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryBaseHeightFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GeometryBaseHeightFieldInfo = (~) Geometry
+    type AttrGetType GeometryBaseHeightFieldInfo = Int32
+    type AttrLabel GeometryBaseHeightFieldInfo = "base_height"
+    attrGet _ = geometryReadBaseHeight
+    attrSet _ = geometryWriteBaseHeight
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryBaseHeight :: AttrLabelProxy "baseHeight"
+geometryBaseHeight = AttrLabelProxy
+
+
+geometryReadWidthInc :: MonadIO m => Geometry -> m Int32
+geometryReadWidthInc s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO Int32
     return val
 
-geometryReadHeightInc :: Geometry -> IO Int32
-geometryReadHeightInc s = withManagedPtr s $ \ptr -> do
+geometryWriteWidthInc :: MonadIO m => Geometry -> Int32 -> m ()
+geometryWriteWidthInc s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Int32)
+
+data GeometryWidthIncFieldInfo
+instance AttrInfo GeometryWidthIncFieldInfo where
+    type AttrAllowedOps GeometryWidthIncFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryWidthIncFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GeometryWidthIncFieldInfo = (~) Geometry
+    type AttrGetType GeometryWidthIncFieldInfo = Int32
+    type AttrLabel GeometryWidthIncFieldInfo = "width_inc"
+    attrGet _ = geometryReadWidthInc
+    attrSet _ = geometryWriteWidthInc
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryWidthInc :: AttrLabelProxy "widthInc"
+geometryWidthInc = AttrLabelProxy
+
+
+geometryReadHeightInc :: MonadIO m => Geometry -> m Int32
+geometryReadHeightInc s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 28) :: IO Int32
     return val
 
-geometryReadMinAspect :: Geometry -> IO Double
-geometryReadMinAspect s = withManagedPtr s $ \ptr -> do
+geometryWriteHeightInc :: MonadIO m => Geometry -> Int32 -> m ()
+geometryWriteHeightInc s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 28) (val :: Int32)
+
+data GeometryHeightIncFieldInfo
+instance AttrInfo GeometryHeightIncFieldInfo where
+    type AttrAllowedOps GeometryHeightIncFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryHeightIncFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GeometryHeightIncFieldInfo = (~) Geometry
+    type AttrGetType GeometryHeightIncFieldInfo = Int32
+    type AttrLabel GeometryHeightIncFieldInfo = "height_inc"
+    attrGet _ = geometryReadHeightInc
+    attrSet _ = geometryWriteHeightInc
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryHeightInc :: AttrLabelProxy "heightInc"
+geometryHeightInc = AttrLabelProxy
+
+
+geometryReadMinAspect :: MonadIO m => Geometry -> m Double
+geometryReadMinAspect s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-geometryReadMaxAspect :: Geometry -> IO Double
-geometryReadMaxAspect s = withManagedPtr s $ \ptr -> do
+geometryWriteMinAspect :: MonadIO m => Geometry -> Double -> m ()
+geometryWriteMinAspect s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 32) (val' :: CDouble)
+
+data GeometryMinAspectFieldInfo
+instance AttrInfo GeometryMinAspectFieldInfo where
+    type AttrAllowedOps GeometryMinAspectFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryMinAspectFieldInfo = (~) Double
+    type AttrBaseTypeConstraint GeometryMinAspectFieldInfo = (~) Geometry
+    type AttrGetType GeometryMinAspectFieldInfo = Double
+    type AttrLabel GeometryMinAspectFieldInfo = "min_aspect"
+    attrGet _ = geometryReadMinAspect
+    attrSet _ = geometryWriteMinAspect
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryMinAspect :: AttrLabelProxy "minAspect"
+geometryMinAspect = AttrLabelProxy
+
+
+geometryReadMaxAspect :: MonadIO m => Geometry -> m Double
+geometryReadMaxAspect s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-geometryReadWinGravity :: Geometry -> IO Gravity
-geometryReadWinGravity s = withManagedPtr s $ \ptr -> do
+geometryWriteMaxAspect :: MonadIO m => Geometry -> Double -> m ()
+geometryWriteMaxAspect s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 40) (val' :: CDouble)
+
+data GeometryMaxAspectFieldInfo
+instance AttrInfo GeometryMaxAspectFieldInfo where
+    type AttrAllowedOps GeometryMaxAspectFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryMaxAspectFieldInfo = (~) Double
+    type AttrBaseTypeConstraint GeometryMaxAspectFieldInfo = (~) Geometry
+    type AttrGetType GeometryMaxAspectFieldInfo = Double
+    type AttrLabel GeometryMaxAspectFieldInfo = "max_aspect"
+    attrGet _ = geometryReadMaxAspect
+    attrSet _ = geometryWriteMaxAspect
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryMaxAspect :: AttrLabelProxy "maxAspect"
+geometryMaxAspect = AttrLabelProxy
+
+
+geometryReadWinGravity :: MonadIO m => Geometry -> m Gravity
+geometryReadWinGravity s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
+
+geometryWriteWinGravity :: MonadIO m => Geometry -> Gravity -> m ()
+geometryWriteWinGravity s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 48) (val' :: CUInt)
+
+data GeometryWinGravityFieldInfo
+instance AttrInfo GeometryWinGravityFieldInfo where
+    type AttrAllowedOps GeometryWinGravityFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GeometryWinGravityFieldInfo = (~) Gravity
+    type AttrBaseTypeConstraint GeometryWinGravityFieldInfo = (~) Geometry
+    type AttrGetType GeometryWinGravityFieldInfo = Gravity
+    type AttrLabel GeometryWinGravityFieldInfo = "win_gravity"
+    attrGet _ = geometryReadWinGravity
+    attrSet _ = geometryWriteWinGravity
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+geometryWinGravity :: AttrLabelProxy "winGravity"
+geometryWinGravity = AttrLabelProxy
+
+
+
+type instance AttributeList Geometry = GeometryAttributeList
+type GeometryAttributeList = ('[ '("minWidth", GeometryMinWidthFieldInfo), '("minHeight", GeometryMinHeightFieldInfo), '("maxWidth", GeometryMaxWidthFieldInfo), '("maxHeight", GeometryMaxHeightFieldInfo), '("baseWidth", GeometryBaseWidthFieldInfo), '("baseHeight", GeometryBaseHeightFieldInfo), '("widthInc", GeometryWidthIncFieldInfo), '("heightInc", GeometryHeightIncFieldInfo), '("minAspect", GeometryMinAspectFieldInfo), '("maxAspect", GeometryMaxAspectFieldInfo), '("winGravity", GeometryWinGravityFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveGeometryMethod (t :: Symbol) (o :: *) :: * where
     ResolveGeometryMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/Geometry.hs-boot b/GI/Gdk/Structs/Geometry.hs-boot
--- a/GI/Gdk/Structs/Geometry.hs-boot
+++ b/GI/Gdk/Structs/Geometry.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.Geometry where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/KeymapKey.hs b/GI/Gdk/Structs/KeymapKey.hs
--- a/GI/Gdk/Structs/KeymapKey.hs
+++ b/GI/Gdk/Structs/KeymapKey.hs
@@ -19,24 +19,30 @@
 
  -- * Properties
 -- ** Group
+    keymapKeyGroup                          ,
     keymapKeyReadGroup                      ,
+    keymapKeyWriteGroup                     ,
 
 
 -- ** Keycode
+    keymapKeyKeycode                        ,
     keymapKeyReadKeycode                    ,
+    keymapKeyWriteKeycode                   ,
 
 
 -- ** Level
+    keymapKeyLevel                          ,
     keymapKeyReadLevel                      ,
+    keymapKeyWriteLevel                     ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -49,23 +55,94 @@
 newZeroKeymapKey :: MonadIO m => m KeymapKey
 newZeroKeymapKey = liftIO $ callocBytes 12 >>= wrapPtr KeymapKey
 
+instance tag ~ 'AttrSet => Constructible KeymapKey tag where
+    new _ attrs = do
+        o <- newZeroKeymapKey
+        GI.Attributes.set o attrs
+        return o
+
+
 noKeymapKey :: Maybe KeymapKey
 noKeymapKey = Nothing
 
-keymapKeyReadKeycode :: KeymapKey -> IO Word32
-keymapKeyReadKeycode s = withManagedPtr s $ \ptr -> do
+keymapKeyReadKeycode :: MonadIO m => KeymapKey -> m Word32
+keymapKeyReadKeycode s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word32
     return val
 
-keymapKeyReadGroup :: KeymapKey -> IO Int32
-keymapKeyReadGroup s = withManagedPtr s $ \ptr -> do
+keymapKeyWriteKeycode :: MonadIO m => KeymapKey -> Word32 -> m ()
+keymapKeyWriteKeycode s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word32)
+
+data KeymapKeyKeycodeFieldInfo
+instance AttrInfo KeymapKeyKeycodeFieldInfo where
+    type AttrAllowedOps KeymapKeyKeycodeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint KeymapKeyKeycodeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint KeymapKeyKeycodeFieldInfo = (~) KeymapKey
+    type AttrGetType KeymapKeyKeycodeFieldInfo = Word32
+    type AttrLabel KeymapKeyKeycodeFieldInfo = "keycode"
+    attrGet _ = keymapKeyReadKeycode
+    attrSet _ = keymapKeyWriteKeycode
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+keymapKeyKeycode :: AttrLabelProxy "keycode"
+keymapKeyKeycode = AttrLabelProxy
+
+
+keymapKeyReadGroup :: MonadIO m => KeymapKey -> m Int32
+keymapKeyReadGroup s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO Int32
     return val
 
-keymapKeyReadLevel :: KeymapKey -> IO Int32
-keymapKeyReadLevel s = withManagedPtr s $ \ptr -> do
+keymapKeyWriteGroup :: MonadIO m => KeymapKey -> Int32 -> m ()
+keymapKeyWriteGroup s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (val :: Int32)
+
+data KeymapKeyGroupFieldInfo
+instance AttrInfo KeymapKeyGroupFieldInfo where
+    type AttrAllowedOps KeymapKeyGroupFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint KeymapKeyGroupFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint KeymapKeyGroupFieldInfo = (~) KeymapKey
+    type AttrGetType KeymapKeyGroupFieldInfo = Int32
+    type AttrLabel KeymapKeyGroupFieldInfo = "group"
+    attrGet _ = keymapKeyReadGroup
+    attrSet _ = keymapKeyWriteGroup
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+keymapKeyGroup :: AttrLabelProxy "group"
+keymapKeyGroup = AttrLabelProxy
+
+
+keymapKeyReadLevel :: MonadIO m => KeymapKey -> m Int32
+keymapKeyReadLevel s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Int32
     return val
+
+keymapKeyWriteLevel :: MonadIO m => KeymapKey -> Int32 -> m ()
+keymapKeyWriteLevel s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Int32)
+
+data KeymapKeyLevelFieldInfo
+instance AttrInfo KeymapKeyLevelFieldInfo where
+    type AttrAllowedOps KeymapKeyLevelFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint KeymapKeyLevelFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint KeymapKeyLevelFieldInfo = (~) KeymapKey
+    type AttrGetType KeymapKeyLevelFieldInfo = Int32
+    type AttrLabel KeymapKeyLevelFieldInfo = "level"
+    attrGet _ = keymapKeyReadLevel
+    attrSet _ = keymapKeyWriteLevel
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+keymapKeyLevel :: AttrLabelProxy "level"
+keymapKeyLevel = AttrLabelProxy
+
+
+
+type instance AttributeList KeymapKey = KeymapKeyAttributeList
+type KeymapKeyAttributeList = ('[ '("keycode", KeymapKeyKeycodeFieldInfo), '("group", KeymapKeyGroupFieldInfo), '("level", KeymapKeyLevelFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveKeymapKeyMethod (t :: Symbol) (o :: *) :: * where
     ResolveKeymapKeyMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/KeymapKey.hs-boot b/GI/Gdk/Structs/KeymapKey.hs-boot
--- a/GI/Gdk/Structs/KeymapKey.hs-boot
+++ b/GI/Gdk/Structs/KeymapKey.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.KeymapKey where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/Point.hs b/GI/Gdk/Structs/Point.hs
--- a/GI/Gdk/Structs/Point.hs
+++ b/GI/Gdk/Structs/Point.hs
@@ -20,19 +20,23 @@
  -- * Properties
 -- ** X
     pointReadX                              ,
+    pointWriteX                             ,
+    pointX                                  ,
 
 
 -- ** Y
     pointReadY                              ,
+    pointWriteY                             ,
+    pointY                                  ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -45,18 +49,69 @@
 newZeroPoint :: MonadIO m => m Point
 newZeroPoint = liftIO $ callocBytes 8 >>= wrapPtr Point
 
+instance tag ~ 'AttrSet => Constructible Point tag where
+    new _ attrs = do
+        o <- newZeroPoint
+        GI.Attributes.set o attrs
+        return o
+
+
 noPoint :: Maybe Point
 noPoint = Nothing
 
-pointReadX :: Point -> IO Int32
-pointReadX s = withManagedPtr s $ \ptr -> do
+pointReadX :: MonadIO m => Point -> m Int32
+pointReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int32
     return val
 
-pointReadY :: Point -> IO Int32
-pointReadY s = withManagedPtr s $ \ptr -> do
+pointWriteX :: MonadIO m => Point -> Int32 -> m ()
+pointWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int32)
+
+data PointXFieldInfo
+instance AttrInfo PointXFieldInfo where
+    type AttrAllowedOps PointXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint PointXFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint PointXFieldInfo = (~) Point
+    type AttrGetType PointXFieldInfo = Int32
+    type AttrLabel PointXFieldInfo = "x"
+    attrGet _ = pointReadX
+    attrSet _ = pointWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+pointX :: AttrLabelProxy "x"
+pointX = AttrLabelProxy
+
+
+pointReadY :: MonadIO m => Point -> m Int32
+pointReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO Int32
     return val
+
+pointWriteY :: MonadIO m => Point -> Int32 -> m ()
+pointWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (val :: Int32)
+
+data PointYFieldInfo
+instance AttrInfo PointYFieldInfo where
+    type AttrAllowedOps PointYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint PointYFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint PointYFieldInfo = (~) Point
+    type AttrGetType PointYFieldInfo = Int32
+    type AttrLabel PointYFieldInfo = "y"
+    attrGet _ = pointReadY
+    attrSet _ = pointWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+pointY :: AttrLabelProxy "y"
+pointY = AttrLabelProxy
+
+
+
+type instance AttributeList Point = PointAttributeList
+type PointAttributeList = ('[ '("x", PointXFieldInfo), '("y", PointYFieldInfo)] :: [(Symbol, *)])
 
 type family ResolvePointMethod (t :: Symbol) (o :: *) :: * where
     ResolvePointMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/Point.hs-boot b/GI/Gdk/Structs/Point.hs-boot
--- a/GI/Gdk/Structs/Point.hs-boot
+++ b/GI/Gdk/Structs/Point.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.Point where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/RGBA.hs b/GI/Gdk/Structs/RGBA.hs
--- a/GI/Gdk/Structs/RGBA.hs
+++ b/GI/Gdk/Structs/RGBA.hs
@@ -53,28 +53,36 @@
 
  -- * Properties
 -- ** Alpha
+    rGBAAlpha                               ,
     rGBAReadAlpha                           ,
+    rGBAWriteAlpha                          ,
 
 
 -- ** Blue
+    rGBABlue                                ,
     rGBAReadBlue                            ,
+    rGBAWriteBlue                           ,
 
 
 -- ** Green
+    rGBAGreen                               ,
     rGBAReadGreen                           ,
+    rGBAWriteGreen                          ,
 
 
 -- ** Red
     rGBAReadRed                             ,
+    rGBARed                                 ,
+    rGBAWriteRed                            ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -93,38 +101,133 @@
 newZeroRGBA :: MonadIO m => m RGBA
 newZeroRGBA = liftIO $ callocBoxedBytes 32 >>= wrapBoxed RGBA
 
+instance tag ~ 'AttrSet => Constructible RGBA tag where
+    new _ attrs = do
+        o <- newZeroRGBA
+        GI.Attributes.set o attrs
+        return o
+
+
 noRGBA :: Maybe RGBA
 noRGBA = Nothing
 
-rGBAReadRed :: RGBA -> IO Double
-rGBAReadRed s = withManagedPtr s $ \ptr -> do
+rGBAReadRed :: MonadIO m => RGBA -> m Double
+rGBAReadRed s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-rGBAReadGreen :: RGBA -> IO Double
-rGBAReadGreen s = withManagedPtr s $ \ptr -> do
+rGBAWriteRed :: MonadIO m => RGBA -> Double -> m ()
+rGBAWriteRed s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 0) (val' :: CDouble)
+
+data RGBARedFieldInfo
+instance AttrInfo RGBARedFieldInfo where
+    type AttrAllowedOps RGBARedFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RGBARedFieldInfo = (~) Double
+    type AttrBaseTypeConstraint RGBARedFieldInfo = (~) RGBA
+    type AttrGetType RGBARedFieldInfo = Double
+    type AttrLabel RGBARedFieldInfo = "red"
+    attrGet _ = rGBAReadRed
+    attrSet _ = rGBAWriteRed
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rGBARed :: AttrLabelProxy "red"
+rGBARed = AttrLabelProxy
+
+
+rGBAReadGreen :: MonadIO m => RGBA -> m Double
+rGBAReadGreen s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-rGBAReadBlue :: RGBA -> IO Double
-rGBAReadBlue s = withManagedPtr s $ \ptr -> do
+rGBAWriteGreen :: MonadIO m => RGBA -> Double -> m ()
+rGBAWriteGreen s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 8) (val' :: CDouble)
+
+data RGBAGreenFieldInfo
+instance AttrInfo RGBAGreenFieldInfo where
+    type AttrAllowedOps RGBAGreenFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RGBAGreenFieldInfo = (~) Double
+    type AttrBaseTypeConstraint RGBAGreenFieldInfo = (~) RGBA
+    type AttrGetType RGBAGreenFieldInfo = Double
+    type AttrLabel RGBAGreenFieldInfo = "green"
+    attrGet _ = rGBAReadGreen
+    attrSet _ = rGBAWriteGreen
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rGBAGreen :: AttrLabelProxy "green"
+rGBAGreen = AttrLabelProxy
+
+
+rGBAReadBlue :: MonadIO m => RGBA -> m Double
+rGBAReadBlue s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-rGBAReadAlpha :: RGBA -> IO Double
-rGBAReadAlpha s = withManagedPtr s $ \ptr -> do
+rGBAWriteBlue :: MonadIO m => RGBA -> Double -> m ()
+rGBAWriteBlue s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 16) (val' :: CDouble)
+
+data RGBABlueFieldInfo
+instance AttrInfo RGBABlueFieldInfo where
+    type AttrAllowedOps RGBABlueFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RGBABlueFieldInfo = (~) Double
+    type AttrBaseTypeConstraint RGBABlueFieldInfo = (~) RGBA
+    type AttrGetType RGBABlueFieldInfo = Double
+    type AttrLabel RGBABlueFieldInfo = "blue"
+    attrGet _ = rGBAReadBlue
+    attrSet _ = rGBAWriteBlue
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rGBABlue :: AttrLabelProxy "blue"
+rGBABlue = AttrLabelProxy
+
+
+rGBAReadAlpha :: MonadIO m => RGBA -> m Double
+rGBAReadAlpha s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO CDouble
     let val' = realToFrac val
     return val'
 
+rGBAWriteAlpha :: MonadIO m => RGBA -> Double -> m ()
+rGBAWriteAlpha s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 24) (val' :: CDouble)
+
+data RGBAAlphaFieldInfo
+instance AttrInfo RGBAAlphaFieldInfo where
+    type AttrAllowedOps RGBAAlphaFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RGBAAlphaFieldInfo = (~) Double
+    type AttrBaseTypeConstraint RGBAAlphaFieldInfo = (~) RGBA
+    type AttrGetType RGBAAlphaFieldInfo = Double
+    type AttrLabel RGBAAlphaFieldInfo = "alpha"
+    attrGet _ = rGBAReadAlpha
+    attrSet _ = rGBAWriteAlpha
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rGBAAlpha :: AttrLabelProxy "alpha"
+rGBAAlpha = AttrLabelProxy
+
+
+
+type instance AttributeList RGBA = RGBAAttributeList
+type RGBAAttributeList = ('[ '("red", RGBARedFieldInfo), '("green", RGBAGreenFieldInfo), '("blue", RGBABlueFieldInfo), '("alpha", RGBAAlphaFieldInfo)] :: [(Symbol, *)])
+
 -- method RGBA::copy
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "RGBA"
+-- returnType : Just (TInterface "Gdk" "RGBA")
 -- throws : False
 -- Skip return : False
 
@@ -153,7 +256,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "p2", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -185,7 +288,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -212,7 +315,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt)
 -- throws : False
 -- Skip return : False
 
@@ -239,7 +342,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "spec", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -271,7 +374,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Structs/RGBA.hs-boot b/GI/Gdk/Structs/RGBA.hs-boot
--- a/GI/Gdk/Structs/RGBA.hs-boot
+++ b/GI/Gdk/Structs/RGBA.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.RGBA where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/Rectangle.hs b/GI/Gdk/Structs/Rectangle.hs
--- a/GI/Gdk/Structs/Rectangle.hs
+++ b/GI/Gdk/Structs/Rectangle.hs
@@ -33,28 +33,36 @@
 
  -- * Properties
 -- ** Height
+    rectangleHeight                         ,
     rectangleReadHeight                     ,
+    rectangleWriteHeight                    ,
 
 
 -- ** Width
     rectangleReadWidth                      ,
+    rectangleWidth                          ,
+    rectangleWriteWidth                     ,
 
 
 -- ** X
     rectangleReadX                          ,
+    rectangleWriteX                         ,
+    rectangleX                              ,
 
 
 -- ** Y
     rectangleReadY                          ,
+    rectangleWriteY                         ,
+    rectangleY                              ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -73,34 +81,125 @@
 newZeroRectangle :: MonadIO m => m Rectangle
 newZeroRectangle = liftIO $ callocBoxedBytes 16 >>= wrapBoxed Rectangle
 
+instance tag ~ 'AttrSet => Constructible Rectangle tag where
+    new _ attrs = do
+        o <- newZeroRectangle
+        GI.Attributes.set o attrs
+        return o
+
+
 noRectangle :: Maybe Rectangle
 noRectangle = Nothing
 
-rectangleReadX :: Rectangle -> IO Int32
-rectangleReadX s = withManagedPtr s $ \ptr -> do
+rectangleReadX :: MonadIO m => Rectangle -> m Int32
+rectangleReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int32
     return val
 
-rectangleReadY :: Rectangle -> IO Int32
-rectangleReadY s = withManagedPtr s $ \ptr -> do
+rectangleWriteX :: MonadIO m => Rectangle -> Int32 -> m ()
+rectangleWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int32)
+
+data RectangleXFieldInfo
+instance AttrInfo RectangleXFieldInfo where
+    type AttrAllowedOps RectangleXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RectangleXFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint RectangleXFieldInfo = (~) Rectangle
+    type AttrGetType RectangleXFieldInfo = Int32
+    type AttrLabel RectangleXFieldInfo = "x"
+    attrGet _ = rectangleReadX
+    attrSet _ = rectangleWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rectangleX :: AttrLabelProxy "x"
+rectangleX = AttrLabelProxy
+
+
+rectangleReadY :: MonadIO m => Rectangle -> m Int32
+rectangleReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO Int32
     return val
 
-rectangleReadWidth :: Rectangle -> IO Int32
-rectangleReadWidth s = withManagedPtr s $ \ptr -> do
+rectangleWriteY :: MonadIO m => Rectangle -> Int32 -> m ()
+rectangleWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (val :: Int32)
+
+data RectangleYFieldInfo
+instance AttrInfo RectangleYFieldInfo where
+    type AttrAllowedOps RectangleYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RectangleYFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint RectangleYFieldInfo = (~) Rectangle
+    type AttrGetType RectangleYFieldInfo = Int32
+    type AttrLabel RectangleYFieldInfo = "y"
+    attrGet _ = rectangleReadY
+    attrSet _ = rectangleWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rectangleY :: AttrLabelProxy "y"
+rectangleY = AttrLabelProxy
+
+
+rectangleReadWidth :: MonadIO m => Rectangle -> m Int32
+rectangleReadWidth s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Int32
     return val
 
-rectangleReadHeight :: Rectangle -> IO Int32
-rectangleReadHeight s = withManagedPtr s $ \ptr -> do
+rectangleWriteWidth :: MonadIO m => Rectangle -> Int32 -> m ()
+rectangleWriteWidth s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Int32)
+
+data RectangleWidthFieldInfo
+instance AttrInfo RectangleWidthFieldInfo where
+    type AttrAllowedOps RectangleWidthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RectangleWidthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint RectangleWidthFieldInfo = (~) Rectangle
+    type AttrGetType RectangleWidthFieldInfo = Int32
+    type AttrLabel RectangleWidthFieldInfo = "width"
+    attrGet _ = rectangleReadWidth
+    attrSet _ = rectangleWriteWidth
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rectangleWidth :: AttrLabelProxy "width"
+rectangleWidth = AttrLabelProxy
+
+
+rectangleReadHeight :: MonadIO m => Rectangle -> m Int32
+rectangleReadHeight s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 12) :: IO Int32
     return val
 
+rectangleWriteHeight :: MonadIO m => Rectangle -> Int32 -> m ()
+rectangleWriteHeight s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 12) (val :: Int32)
+
+data RectangleHeightFieldInfo
+instance AttrInfo RectangleHeightFieldInfo where
+    type AttrAllowedOps RectangleHeightFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RectangleHeightFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint RectangleHeightFieldInfo = (~) Rectangle
+    type AttrGetType RectangleHeightFieldInfo = Int32
+    type AttrLabel RectangleHeightFieldInfo = "height"
+    attrGet _ = rectangleReadHeight
+    attrSet _ = rectangleWriteHeight
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rectangleHeight :: AttrLabelProxy "height"
+rectangleHeight = AttrLabelProxy
+
+
+
+type instance AttributeList Rectangle = RectangleAttributeList
+type RectangleAttributeList = ('[ '("x", RectangleXFieldInfo), '("y", RectangleYFieldInfo), '("width", RectangleWidthFieldInfo), '("height", RectangleHeightFieldInfo)] :: [(Symbol, *)])
+
 -- method Rectangle::intersect
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Rectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src2", argType = TInterface "Gdk" "Rectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface "Gdk" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -135,7 +234,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Rectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src2", argType = TInterface "Gdk" "Rectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface "Gdk" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Structs/Rectangle.hs-boot b/GI/Gdk/Structs/Rectangle.hs-boot
--- a/GI/Gdk/Structs/Rectangle.hs-boot
+++ b/GI/Gdk/Structs/Rectangle.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.Rectangle where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/TimeCoord.hs b/GI/Gdk/Structs/TimeCoord.hs
--- a/GI/Gdk/Structs/TimeCoord.hs
+++ b/GI/Gdk/Structs/TimeCoord.hs
@@ -20,15 +20,17 @@
  -- * Properties
 -- ** Time
     timeCoordReadTime                       ,
+    timeCoordTime                           ,
+    timeCoordWriteTime                      ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -41,15 +43,45 @@
 newZeroTimeCoord :: MonadIO m => m TimeCoord
 newZeroTimeCoord = liftIO $ callocBytes 1032 >>= wrapPtr TimeCoord
 
+instance tag ~ 'AttrSet => Constructible TimeCoord tag where
+    new _ attrs = do
+        o <- newZeroTimeCoord
+        GI.Attributes.set o attrs
+        return o
+
+
 noTimeCoord :: Maybe TimeCoord
 noTimeCoord = Nothing
 
-timeCoordReadTime :: TimeCoord -> IO Word32
-timeCoordReadTime s = withManagedPtr s $ \ptr -> do
+timeCoordReadTime :: MonadIO m => TimeCoord -> m Word32
+timeCoordReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word32
     return val
 
--- XXX Skipped getter for "TimeCoord:axes" :: Not implemented: "Don't know how to unpack C array of type TCArray False 128 (-1) (TBasicType TDouble)"
+timeCoordWriteTime :: MonadIO m => TimeCoord -> Word32 -> m ()
+timeCoordWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word32)
+
+data TimeCoordTimeFieldInfo
+instance AttrInfo TimeCoordTimeFieldInfo where
+    type AttrAllowedOps TimeCoordTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint TimeCoordTimeFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint TimeCoordTimeFieldInfo = (~) TimeCoord
+    type AttrGetType TimeCoordTimeFieldInfo = Word32
+    type AttrLabel TimeCoordTimeFieldInfo = "time"
+    attrGet _ = timeCoordReadTime
+    attrSet _ = timeCoordWriteTime
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+timeCoordTime :: AttrLabelProxy "time"
+timeCoordTime = AttrLabelProxy
+
+
+-- XXX Skipped attribute for "TimeCoord:axes" :: Not implemented: "Don't know how to unpack C array of type TCArray False 128 (-1) (TBasicType TDouble)"
+
+type instance AttributeList TimeCoord = TimeCoordAttributeList
+type TimeCoordAttributeList = ('[ '("time", TimeCoordTimeFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveTimeCoordMethod (t :: Symbol) (o :: *) :: * where
     ResolveTimeCoordMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/TimeCoord.hs-boot b/GI/Gdk/Structs/TimeCoord.hs-boot
--- a/GI/Gdk/Structs/TimeCoord.hs-boot
+++ b/GI/Gdk/Structs/TimeCoord.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.TimeCoord where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/WindowAttr.hs b/GI/Gdk/Structs/WindowAttr.hs
--- a/GI/Gdk/Structs/WindowAttr.hs
+++ b/GI/Gdk/Structs/WindowAttr.hs
@@ -19,68 +19,101 @@
 
  -- * Properties
 -- ** Cursor
+    windowAttrClearCursor                   ,
+    windowAttrCursor                        ,
     windowAttrReadCursor                    ,
+    windowAttrWriteCursor                   ,
 
 
 -- ** EventMask
+    windowAttrEventMask                     ,
     windowAttrReadEventMask                 ,
+    windowAttrWriteEventMask                ,
 
 
 -- ** Height
+    windowAttrHeight                        ,
     windowAttrReadHeight                    ,
+    windowAttrWriteHeight                   ,
 
 
 -- ** OverrideRedirect
+    windowAttrOverrideRedirect              ,
     windowAttrReadOverrideRedirect          ,
+    windowAttrWriteOverrideRedirect         ,
 
 
 -- ** Title
+    windowAttrClearTitle                    ,
     windowAttrReadTitle                     ,
+    windowAttrTitle                         ,
+    windowAttrWriteTitle                    ,
 
 
 -- ** TypeHint
     windowAttrReadTypeHint                  ,
+    windowAttrTypeHint                      ,
+    windowAttrWriteTypeHint                 ,
 
 
 -- ** Visual
+    windowAttrClearVisual                   ,
     windowAttrReadVisual                    ,
+    windowAttrVisual                        ,
+    windowAttrWriteVisual                   ,
 
 
 -- ** Wclass
     windowAttrReadWclass                    ,
+    windowAttrWclass                        ,
+    windowAttrWriteWclass                   ,
 
 
 -- ** Width
     windowAttrReadWidth                     ,
+    windowAttrWidth                         ,
+    windowAttrWriteWidth                    ,
 
 
 -- ** WindowType
     windowAttrReadWindowType                ,
+    windowAttrWindowType                    ,
+    windowAttrWriteWindowType               ,
 
 
 -- ** WmclassClass
+    windowAttrClearWmclassClass             ,
     windowAttrReadWmclassClass              ,
+    windowAttrWmclassClass                  ,
+    windowAttrWriteWmclassClass             ,
 
 
 -- ** WmclassName
+    windowAttrClearWmclassName              ,
     windowAttrReadWmclassName               ,
+    windowAttrWmclassName                   ,
+    windowAttrWriteWmclassName              ,
 
 
 -- ** X
     windowAttrReadX                         ,
+    windowAttrWriteX                        ,
+    windowAttrX                             ,
 
 
 -- ** Y
     windowAttrReadY                         ,
+    windowAttrWriteY                        ,
+    windowAttrY                             ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -93,87 +126,412 @@
 newZeroWindowAttr :: MonadIO m => m WindowAttr
 newZeroWindowAttr = liftIO $ callocBytes 80 >>= wrapPtr WindowAttr
 
+instance tag ~ 'AttrSet => Constructible WindowAttr tag where
+    new _ attrs = do
+        o <- newZeroWindowAttr
+        GI.Attributes.set o attrs
+        return o
+
+
 noWindowAttr :: Maybe WindowAttr
 noWindowAttr = Nothing
 
-windowAttrReadTitle :: WindowAttr -> IO T.Text
-windowAttrReadTitle s = withManagedPtr s $ \ptr -> do
+windowAttrReadTitle :: MonadIO m => WindowAttr -> m (Maybe T.Text)
+windowAttrReadTitle s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
 
-windowAttrReadEventMask :: WindowAttr -> IO Int32
-windowAttrReadEventMask s = withManagedPtr s $ \ptr -> do
+windowAttrWriteTitle :: MonadIO m => WindowAttr -> CString -> m ()
+windowAttrWriteTitle s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: CString)
+
+windowAttrClearTitle :: MonadIO m => WindowAttr -> m ()
+windowAttrClearTitle s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: CString)
+
+data WindowAttrTitleFieldInfo
+instance AttrInfo WindowAttrTitleFieldInfo where
+    type AttrAllowedOps WindowAttrTitleFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint WindowAttrTitleFieldInfo = (~) CString
+    type AttrBaseTypeConstraint WindowAttrTitleFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrTitleFieldInfo = Maybe T.Text
+    type AttrLabel WindowAttrTitleFieldInfo = "title"
+    attrGet _ = windowAttrReadTitle
+    attrSet _ = windowAttrWriteTitle
+    attrConstruct = undefined
+    attrClear _ = windowAttrClearTitle
+
+windowAttrTitle :: AttrLabelProxy "title"
+windowAttrTitle = AttrLabelProxy
+
+
+windowAttrReadEventMask :: MonadIO m => WindowAttr -> m Int32
+windowAttrReadEventMask s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Int32
     return val
 
-windowAttrReadX :: WindowAttr -> IO Int32
-windowAttrReadX s = withManagedPtr s $ \ptr -> do
+windowAttrWriteEventMask :: MonadIO m => WindowAttr -> Int32 -> m ()
+windowAttrWriteEventMask s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Int32)
+
+data WindowAttrEventMaskFieldInfo
+instance AttrInfo WindowAttrEventMaskFieldInfo where
+    type AttrAllowedOps WindowAttrEventMaskFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint WindowAttrEventMaskFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint WindowAttrEventMaskFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrEventMaskFieldInfo = Int32
+    type AttrLabel WindowAttrEventMaskFieldInfo = "event_mask"
+    attrGet _ = windowAttrReadEventMask
+    attrSet _ = windowAttrWriteEventMask
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+windowAttrEventMask :: AttrLabelProxy "eventMask"
+windowAttrEventMask = AttrLabelProxy
+
+
+windowAttrReadX :: MonadIO m => WindowAttr -> m Int32
+windowAttrReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 12) :: IO Int32
     return val
 
-windowAttrReadY :: WindowAttr -> IO Int32
-windowAttrReadY s = withManagedPtr s $ \ptr -> do
+windowAttrWriteX :: MonadIO m => WindowAttr -> Int32 -> m ()
+windowAttrWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 12) (val :: Int32)
+
+data WindowAttrXFieldInfo
+instance AttrInfo WindowAttrXFieldInfo where
+    type AttrAllowedOps WindowAttrXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint WindowAttrXFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint WindowAttrXFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrXFieldInfo = Int32
+    type AttrLabel WindowAttrXFieldInfo = "x"
+    attrGet _ = windowAttrReadX
+    attrSet _ = windowAttrWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+windowAttrX :: AttrLabelProxy "x"
+windowAttrX = AttrLabelProxy
+
+
+windowAttrReadY :: MonadIO m => WindowAttr -> m Int32
+windowAttrReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int32
     return val
 
-windowAttrReadWidth :: WindowAttr -> IO Int32
-windowAttrReadWidth s = withManagedPtr s $ \ptr -> do
+windowAttrWriteY :: MonadIO m => WindowAttr -> Int32 -> m ()
+windowAttrWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int32)
+
+data WindowAttrYFieldInfo
+instance AttrInfo WindowAttrYFieldInfo where
+    type AttrAllowedOps WindowAttrYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint WindowAttrYFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint WindowAttrYFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrYFieldInfo = Int32
+    type AttrLabel WindowAttrYFieldInfo = "y"
+    attrGet _ = windowAttrReadY
+    attrSet _ = windowAttrWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+windowAttrY :: AttrLabelProxy "y"
+windowAttrY = AttrLabelProxy
+
+
+windowAttrReadWidth :: MonadIO m => WindowAttr -> m Int32
+windowAttrReadWidth s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Int32
     return val
 
-windowAttrReadHeight :: WindowAttr -> IO Int32
-windowAttrReadHeight s = withManagedPtr s $ \ptr -> do
+windowAttrWriteWidth :: MonadIO m => WindowAttr -> Int32 -> m ()
+windowAttrWriteWidth s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Int32)
+
+data WindowAttrWidthFieldInfo
+instance AttrInfo WindowAttrWidthFieldInfo where
+    type AttrAllowedOps WindowAttrWidthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint WindowAttrWidthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint WindowAttrWidthFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrWidthFieldInfo = Int32
+    type AttrLabel WindowAttrWidthFieldInfo = "width"
+    attrGet _ = windowAttrReadWidth
+    attrSet _ = windowAttrWriteWidth
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+windowAttrWidth :: AttrLabelProxy "width"
+windowAttrWidth = AttrLabelProxy
+
+
+windowAttrReadHeight :: MonadIO m => WindowAttr -> m Int32
+windowAttrReadHeight s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO Int32
     return val
 
-windowAttrReadWclass :: WindowAttr -> IO WindowWindowClass
-windowAttrReadWclass s = withManagedPtr s $ \ptr -> do
+windowAttrWriteHeight :: MonadIO m => WindowAttr -> Int32 -> m ()
+windowAttrWriteHeight s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Int32)
+
+data WindowAttrHeightFieldInfo
+instance AttrInfo WindowAttrHeightFieldInfo where
+    type AttrAllowedOps WindowAttrHeightFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint WindowAttrHeightFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint WindowAttrHeightFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrHeightFieldInfo = Int32
+    type AttrLabel WindowAttrHeightFieldInfo = "height"
+    attrGet _ = windowAttrReadHeight
+    attrSet _ = windowAttrWriteHeight
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+windowAttrHeight :: AttrLabelProxy "height"
+windowAttrHeight = AttrLabelProxy
+
+
+windowAttrReadWclass :: MonadIO m => WindowAttr -> m WindowWindowClass
+windowAttrReadWclass s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 28) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-windowAttrReadVisual :: WindowAttr -> IO Visual
-windowAttrReadVisual s = withManagedPtr s $ \ptr -> do
+windowAttrWriteWclass :: MonadIO m => WindowAttr -> WindowWindowClass -> m ()
+windowAttrWriteWclass s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 28) (val' :: CUInt)
+
+data WindowAttrWclassFieldInfo
+instance AttrInfo WindowAttrWclassFieldInfo where
+    type AttrAllowedOps WindowAttrWclassFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint WindowAttrWclassFieldInfo = (~) WindowWindowClass
+    type AttrBaseTypeConstraint WindowAttrWclassFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrWclassFieldInfo = WindowWindowClass
+    type AttrLabel WindowAttrWclassFieldInfo = "wclass"
+    attrGet _ = windowAttrReadWclass
+    attrSet _ = windowAttrWriteWclass
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+windowAttrWclass :: AttrLabelProxy "wclass"
+windowAttrWclass = AttrLabelProxy
+
+
+windowAttrReadVisual :: MonadIO m => WindowAttr -> m (Maybe Visual)
+windowAttrReadVisual s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO (Ptr Visual)
-    val' <- (newObject Visual) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Visual) val'
+        return val''
+    return result
 
-windowAttrReadWindowType :: WindowAttr -> IO WindowType
-windowAttrReadWindowType s = withManagedPtr s $ \ptr -> do
+windowAttrWriteVisual :: MonadIO m => WindowAttr -> Ptr Visual -> m ()
+windowAttrWriteVisual s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Ptr Visual)
+
+windowAttrClearVisual :: MonadIO m => WindowAttr -> m ()
+windowAttrClearVisual s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (nullPtr :: Ptr Visual)
+
+data WindowAttrVisualFieldInfo
+instance AttrInfo WindowAttrVisualFieldInfo where
+    type AttrAllowedOps WindowAttrVisualFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint WindowAttrVisualFieldInfo = (~) (Ptr Visual)
+    type AttrBaseTypeConstraint WindowAttrVisualFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrVisualFieldInfo = Maybe Visual
+    type AttrLabel WindowAttrVisualFieldInfo = "visual"
+    attrGet _ = windowAttrReadVisual
+    attrSet _ = windowAttrWriteVisual
+    attrConstruct = undefined
+    attrClear _ = windowAttrClearVisual
+
+windowAttrVisual :: AttrLabelProxy "visual"
+windowAttrVisual = AttrLabelProxy
+
+
+windowAttrReadWindowType :: MonadIO m => WindowAttr -> m WindowType
+windowAttrReadWindowType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-windowAttrReadCursor :: WindowAttr -> IO Cursor
-windowAttrReadCursor s = withManagedPtr s $ \ptr -> do
+windowAttrWriteWindowType :: MonadIO m => WindowAttr -> WindowType -> m ()
+windowAttrWriteWindowType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 40) (val' :: CUInt)
+
+data WindowAttrWindowTypeFieldInfo
+instance AttrInfo WindowAttrWindowTypeFieldInfo where
+    type AttrAllowedOps WindowAttrWindowTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint WindowAttrWindowTypeFieldInfo = (~) WindowType
+    type AttrBaseTypeConstraint WindowAttrWindowTypeFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrWindowTypeFieldInfo = WindowType
+    type AttrLabel WindowAttrWindowTypeFieldInfo = "window_type"
+    attrGet _ = windowAttrReadWindowType
+    attrSet _ = windowAttrWriteWindowType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+windowAttrWindowType :: AttrLabelProxy "windowType"
+windowAttrWindowType = AttrLabelProxy
+
+
+windowAttrReadCursor :: MonadIO m => WindowAttr -> m (Maybe Cursor)
+windowAttrReadCursor s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO (Ptr Cursor)
-    val' <- (newObject Cursor) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Cursor) val'
+        return val''
+    return result
 
-windowAttrReadWmclassName :: WindowAttr -> IO T.Text
-windowAttrReadWmclassName s = withManagedPtr s $ \ptr -> do
+windowAttrWriteCursor :: MonadIO m => WindowAttr -> Ptr Cursor -> m ()
+windowAttrWriteCursor s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (val :: Ptr Cursor)
+
+windowAttrClearCursor :: MonadIO m => WindowAttr -> m ()
+windowAttrClearCursor s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (nullPtr :: Ptr Cursor)
+
+data WindowAttrCursorFieldInfo
+instance AttrInfo WindowAttrCursorFieldInfo where
+    type AttrAllowedOps WindowAttrCursorFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint WindowAttrCursorFieldInfo = (~) (Ptr Cursor)
+    type AttrBaseTypeConstraint WindowAttrCursorFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrCursorFieldInfo = Maybe Cursor
+    type AttrLabel WindowAttrCursorFieldInfo = "cursor"
+    attrGet _ = windowAttrReadCursor
+    attrSet _ = windowAttrWriteCursor
+    attrConstruct = undefined
+    attrClear _ = windowAttrClearCursor
+
+windowAttrCursor :: AttrLabelProxy "cursor"
+windowAttrCursor = AttrLabelProxy
+
+
+windowAttrReadWmclassName :: MonadIO m => WindowAttr -> m (Maybe T.Text)
+windowAttrReadWmclassName s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 56) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
 
-windowAttrReadWmclassClass :: WindowAttr -> IO T.Text
-windowAttrReadWmclassClass s = withManagedPtr s $ \ptr -> do
+windowAttrWriteWmclassName :: MonadIO m => WindowAttr -> CString -> m ()
+windowAttrWriteWmclassName s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 56) (val :: CString)
+
+windowAttrClearWmclassName :: MonadIO m => WindowAttr -> m ()
+windowAttrClearWmclassName s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 56) (nullPtr :: CString)
+
+data WindowAttrWmclassNameFieldInfo
+instance AttrInfo WindowAttrWmclassNameFieldInfo where
+    type AttrAllowedOps WindowAttrWmclassNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint WindowAttrWmclassNameFieldInfo = (~) CString
+    type AttrBaseTypeConstraint WindowAttrWmclassNameFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrWmclassNameFieldInfo = Maybe T.Text
+    type AttrLabel WindowAttrWmclassNameFieldInfo = "wmclass_name"
+    attrGet _ = windowAttrReadWmclassName
+    attrSet _ = windowAttrWriteWmclassName
+    attrConstruct = undefined
+    attrClear _ = windowAttrClearWmclassName
+
+windowAttrWmclassName :: AttrLabelProxy "wmclassName"
+windowAttrWmclassName = AttrLabelProxy
+
+
+windowAttrReadWmclassClass :: MonadIO m => WindowAttr -> m (Maybe T.Text)
+windowAttrReadWmclassClass s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 64) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
 
-windowAttrReadOverrideRedirect :: WindowAttr -> IO Bool
-windowAttrReadOverrideRedirect s = withManagedPtr s $ \ptr -> do
+windowAttrWriteWmclassClass :: MonadIO m => WindowAttr -> CString -> m ()
+windowAttrWriteWmclassClass s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 64) (val :: CString)
+
+windowAttrClearWmclassClass :: MonadIO m => WindowAttr -> m ()
+windowAttrClearWmclassClass s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 64) (nullPtr :: CString)
+
+data WindowAttrWmclassClassFieldInfo
+instance AttrInfo WindowAttrWmclassClassFieldInfo where
+    type AttrAllowedOps WindowAttrWmclassClassFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint WindowAttrWmclassClassFieldInfo = (~) CString
+    type AttrBaseTypeConstraint WindowAttrWmclassClassFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrWmclassClassFieldInfo = Maybe T.Text
+    type AttrLabel WindowAttrWmclassClassFieldInfo = "wmclass_class"
+    attrGet _ = windowAttrReadWmclassClass
+    attrSet _ = windowAttrWriteWmclassClass
+    attrConstruct = undefined
+    attrClear _ = windowAttrClearWmclassClass
+
+windowAttrWmclassClass :: AttrLabelProxy "wmclassClass"
+windowAttrWmclassClass = AttrLabelProxy
+
+
+windowAttrReadOverrideRedirect :: MonadIO m => WindowAttr -> m Bool
+windowAttrReadOverrideRedirect s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 72) :: IO CInt
     let val' = (/= 0) val
     return val'
 
-windowAttrReadTypeHint :: WindowAttr -> IO WindowTypeHint
-windowAttrReadTypeHint s = withManagedPtr s $ \ptr -> do
+windowAttrWriteOverrideRedirect :: MonadIO m => WindowAttr -> Bool -> m ()
+windowAttrWriteOverrideRedirect s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 72) (val' :: CInt)
+
+data WindowAttrOverrideRedirectFieldInfo
+instance AttrInfo WindowAttrOverrideRedirectFieldInfo where
+    type AttrAllowedOps WindowAttrOverrideRedirectFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint WindowAttrOverrideRedirectFieldInfo = (~) Bool
+    type AttrBaseTypeConstraint WindowAttrOverrideRedirectFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrOverrideRedirectFieldInfo = Bool
+    type AttrLabel WindowAttrOverrideRedirectFieldInfo = "override_redirect"
+    attrGet _ = windowAttrReadOverrideRedirect
+    attrSet _ = windowAttrWriteOverrideRedirect
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+windowAttrOverrideRedirect :: AttrLabelProxy "overrideRedirect"
+windowAttrOverrideRedirect = AttrLabelProxy
+
+
+windowAttrReadTypeHint :: MonadIO m => WindowAttr -> m WindowTypeHint
+windowAttrReadTypeHint s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 76) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
+
+windowAttrWriteTypeHint :: MonadIO m => WindowAttr -> WindowTypeHint -> m ()
+windowAttrWriteTypeHint s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 76) (val' :: CUInt)
+
+data WindowAttrTypeHintFieldInfo
+instance AttrInfo WindowAttrTypeHintFieldInfo where
+    type AttrAllowedOps WindowAttrTypeHintFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint WindowAttrTypeHintFieldInfo = (~) WindowTypeHint
+    type AttrBaseTypeConstraint WindowAttrTypeHintFieldInfo = (~) WindowAttr
+    type AttrGetType WindowAttrTypeHintFieldInfo = WindowTypeHint
+    type AttrLabel WindowAttrTypeHintFieldInfo = "type_hint"
+    attrGet _ = windowAttrReadTypeHint
+    attrSet _ = windowAttrWriteTypeHint
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+windowAttrTypeHint :: AttrLabelProxy "typeHint"
+windowAttrTypeHint = AttrLabelProxy
+
+
+
+type instance AttributeList WindowAttr = WindowAttrAttributeList
+type WindowAttrAttributeList = ('[ '("title", WindowAttrTitleFieldInfo), '("eventMask", WindowAttrEventMaskFieldInfo), '("x", WindowAttrXFieldInfo), '("y", WindowAttrYFieldInfo), '("width", WindowAttrWidthFieldInfo), '("height", WindowAttrHeightFieldInfo), '("wclass", WindowAttrWclassFieldInfo), '("visual", WindowAttrVisualFieldInfo), '("windowType", WindowAttrWindowTypeFieldInfo), '("cursor", WindowAttrCursorFieldInfo), '("wmclassName", WindowAttrWmclassNameFieldInfo), '("wmclassClass", WindowAttrWmclassClassFieldInfo), '("overrideRedirect", WindowAttrOverrideRedirectFieldInfo), '("typeHint", WindowAttrTypeHintFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveWindowAttrMethod (t :: Symbol) (o :: *) :: * where
     ResolveWindowAttrMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/WindowAttr.hs-boot b/GI/Gdk/Structs/WindowAttr.hs-boot
--- a/GI/Gdk/Structs/WindowAttr.hs-boot
+++ b/GI/Gdk/Structs/WindowAttr.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.WindowAttr where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Structs/WindowRedirect.hs b/GI/Gdk/Structs/WindowRedirect.hs
--- a/GI/Gdk/Structs/WindowRedirect.hs
+++ b/GI/Gdk/Structs/WindowRedirect.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -29,6 +29,10 @@
 newtype WindowRedirect = WindowRedirect (ForeignPtr WindowRedirect)
 noWindowRedirect :: Maybe WindowRedirect
 noWindowRedirect = Nothing
+
+
+type instance AttributeList WindowRedirect = WindowRedirectAttributeList
+type WindowRedirectAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveWindowRedirectMethod (t :: Symbol) (o :: *) :: * where
     ResolveWindowRedirectMethod l o = MethodResolutionFailed l o
diff --git a/GI/Gdk/Structs/WindowRedirect.hs-boot b/GI/Gdk/Structs/WindowRedirect.hs-boot
--- a/GI/Gdk/Structs/WindowRedirect.hs-boot
+++ b/GI/Gdk/Structs/WindowRedirect.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Structs.WindowRedirect where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Unions.hs b/GI/Gdk/Unions.hs
--- a/GI/Gdk/Unions.hs
+++ b/GI/Gdk/Unions.hs
@@ -14,9 +14,9 @@
 
 import GI.Gdk.Unions.Event
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/Gdk/Unions/Event.hs b/GI/Gdk/Unions/Event.hs
--- a/GI/Gdk/Unions/Event.hs
+++ b/GI/Gdk/Unions/Event.hs
@@ -160,100 +160,165 @@
 
  -- * Properties
 -- ** Any
+    eventAny                                ,
+    eventClearAny                           ,
     eventReadAny                            ,
+    eventWriteAny                           ,
 
 
 -- ** Button
+    eventButton                             ,
+    eventClearButton                        ,
     eventReadButton                         ,
+    eventWriteButton                        ,
 
 
 -- ** Configure
+    eventClearConfigure                     ,
+    eventConfigure                          ,
     eventReadConfigure                      ,
+    eventWriteConfigure                     ,
 
 
 -- ** Crossing
+    eventClearCrossing                      ,
+    eventCrossing                           ,
     eventReadCrossing                       ,
+    eventWriteCrossing                      ,
 
 
 -- ** Dnd
+    eventClearDnd                           ,
+    eventDnd                                ,
     eventReadDnd                            ,
+    eventWriteDnd                           ,
 
 
 -- ** Expose
+    eventClearExpose                        ,
+    eventExpose                             ,
     eventReadExpose                         ,
+    eventWriteExpose                        ,
 
 
 -- ** FocusChange
+    eventClearFocusChange                   ,
+    eventFocusChange                        ,
     eventReadFocusChange                    ,
+    eventWriteFocusChange                   ,
 
 
 -- ** GrabBroken
+    eventClearGrabBroken                    ,
+    eventGrabBroken                         ,
     eventReadGrabBroken                     ,
+    eventWriteGrabBroken                    ,
 
 
 -- ** Key
+    eventClearKey                           ,
+    eventKey                                ,
     eventReadKey                            ,
+    eventWriteKey                           ,
 
 
 -- ** Motion
+    eventClearMotion                        ,
+    eventMotion                             ,
     eventReadMotion                         ,
+    eventWriteMotion                        ,
 
 
 -- ** OwnerChange
+    eventClearOwnerChange                   ,
+    eventOwnerChange                        ,
     eventReadOwnerChange                    ,
+    eventWriteOwnerChange                   ,
 
 
 -- ** Property
+    eventClearProperty                      ,
+    eventProperty                           ,
     eventReadProperty                       ,
+    eventWriteProperty                      ,
 
 
 -- ** Proximity
+    eventClearProximity                     ,
+    eventProximity                          ,
     eventReadProximity                      ,
+    eventWriteProximity                     ,
 
 
 -- ** Scroll
+    eventClearScroll                        ,
     eventReadScroll                         ,
+    eventScroll                             ,
+    eventWriteScroll                        ,
 
 
 -- ** Selection
+    eventClearSelection                     ,
     eventReadSelection                      ,
+    eventSelection                          ,
+    eventWriteSelection                     ,
 
 
 -- ** Setting
+    eventClearSetting                       ,
     eventReadSetting                        ,
+    eventSetting                            ,
+    eventWriteSetting                       ,
 
 
 -- ** Touch
+    eventClearTouch                         ,
     eventReadTouch                          ,
+    eventTouch                              ,
+    eventWriteTouch                         ,
 
 
 -- ** TouchpadPinch
+    eventClearTouchpadPinch                 ,
     eventReadTouchpadPinch                  ,
+    eventTouchpadPinch                      ,
+    eventWriteTouchpadPinch                 ,
 
 
 -- ** TouchpadSwipe
+    eventClearTouchpadSwipe                 ,
     eventReadTouchpadSwipe                  ,
+    eventTouchpadSwipe                      ,
+    eventWriteTouchpadSwipe                 ,
 
 
 -- ** Type
     eventReadType                           ,
+    eventType                               ,
+    eventWriteType                          ,
 
 
 -- ** Visibility
+    eventClearVisibility                    ,
     eventReadVisibility                     ,
+    eventVisibility                         ,
+    eventWriteVisibility                    ,
 
 
 -- ** WindowState
+    eventClearWindowState                   ,
     eventReadWindowState                    ,
+    eventWindowState                        ,
+    eventWriteWindowState                   ,
 
 
 
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -273,146 +338,724 @@
 newZeroEvent :: MonadIO m => m Event
 newZeroEvent = liftIO $ callocBoxedBytes 104 >>= wrapBoxed Event
 
+instance tag ~ 'AttrSet => Constructible Event tag where
+    new _ attrs = do
+        o <- newZeroEvent
+        GI.Attributes.set o attrs
+        return o
+
+
 noEvent :: Maybe Event
 noEvent = Nothing
 
-eventReadType :: Event -> IO EventType
-eventReadType s = withManagedPtr s $ \ptr -> do
+eventReadType :: MonadIO m => Event -> m EventType
+eventReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-eventReadAny :: Event -> IO EventAny
-eventReadAny s = withManagedPtr s $ \ptr -> do
+eventWriteType :: MonadIO m => Event -> EventType -> m ()
+eventWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EventTypeFieldInfo
+instance AttrInfo EventTypeFieldInfo where
+    type AttrAllowedOps EventTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EventTypeFieldInfo = (~) EventType
+    type AttrBaseTypeConstraint EventTypeFieldInfo = (~) Event
+    type AttrGetType EventTypeFieldInfo = EventType
+    type AttrLabel EventTypeFieldInfo = "type"
+    attrGet _ = eventReadType
+    attrSet _ = eventWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+eventType :: AttrLabelProxy "type"
+eventType = AttrLabelProxy
+
+
+eventReadAny :: MonadIO m => Event -> m (Maybe EventAny)
+eventReadAny s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventAny)
-    val' <- (newPtr 24 EventAny) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 24 EventAny) val'
+        return val''
+    return result
 
-eventReadExpose :: Event -> IO EventExpose
-eventReadExpose s = withManagedPtr s $ \ptr -> do
+eventWriteAny :: MonadIO m => Event -> Ptr EventAny -> m ()
+eventWriteAny s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventAny)
+
+eventClearAny :: MonadIO m => Event -> m ()
+eventClearAny s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventAny)
+
+data EventAnyFieldInfo
+instance AttrInfo EventAnyFieldInfo where
+    type AttrAllowedOps EventAnyFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventAnyFieldInfo = (~) (Ptr EventAny)
+    type AttrBaseTypeConstraint EventAnyFieldInfo = (~) Event
+    type AttrGetType EventAnyFieldInfo = Maybe EventAny
+    type AttrLabel EventAnyFieldInfo = "any"
+    attrGet _ = eventReadAny
+    attrSet _ = eventWriteAny
+    attrConstruct = undefined
+    attrClear _ = eventClearAny
+
+eventAny :: AttrLabelProxy "any"
+eventAny = AttrLabelProxy
+
+
+eventReadExpose :: MonadIO m => Event -> m (Maybe EventExpose)
+eventReadExpose s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventExpose)
-    val' <- (newPtr 56 EventExpose) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 56 EventExpose) val'
+        return val''
+    return result
 
-eventReadVisibility :: Event -> IO EventVisibility
-eventReadVisibility s = withManagedPtr s $ \ptr -> do
+eventWriteExpose :: MonadIO m => Event -> Ptr EventExpose -> m ()
+eventWriteExpose s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventExpose)
+
+eventClearExpose :: MonadIO m => Event -> m ()
+eventClearExpose s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventExpose)
+
+data EventExposeFieldInfo
+instance AttrInfo EventExposeFieldInfo where
+    type AttrAllowedOps EventExposeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventExposeFieldInfo = (~) (Ptr EventExpose)
+    type AttrBaseTypeConstraint EventExposeFieldInfo = (~) Event
+    type AttrGetType EventExposeFieldInfo = Maybe EventExpose
+    type AttrLabel EventExposeFieldInfo = "expose"
+    attrGet _ = eventReadExpose
+    attrSet _ = eventWriteExpose
+    attrConstruct = undefined
+    attrClear _ = eventClearExpose
+
+eventExpose :: AttrLabelProxy "expose"
+eventExpose = AttrLabelProxy
+
+
+eventReadVisibility :: MonadIO m => Event -> m (Maybe EventVisibility)
+eventReadVisibility s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventVisibility)
-    val' <- (newPtr 24 EventVisibility) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 24 EventVisibility) val'
+        return val''
+    return result
 
-eventReadMotion :: Event -> IO EventMotion
-eventReadMotion s = withManagedPtr s $ \ptr -> do
+eventWriteVisibility :: MonadIO m => Event -> Ptr EventVisibility -> m ()
+eventWriteVisibility s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventVisibility)
+
+eventClearVisibility :: MonadIO m => Event -> m ()
+eventClearVisibility s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventVisibility)
+
+data EventVisibilityFieldInfo
+instance AttrInfo EventVisibilityFieldInfo where
+    type AttrAllowedOps EventVisibilityFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventVisibilityFieldInfo = (~) (Ptr EventVisibility)
+    type AttrBaseTypeConstraint EventVisibilityFieldInfo = (~) Event
+    type AttrGetType EventVisibilityFieldInfo = Maybe EventVisibility
+    type AttrLabel EventVisibilityFieldInfo = "visibility"
+    attrGet _ = eventReadVisibility
+    attrSet _ = eventWriteVisibility
+    attrConstruct = undefined
+    attrClear _ = eventClearVisibility
+
+eventVisibility :: AttrLabelProxy "visibility"
+eventVisibility = AttrLabelProxy
+
+
+eventReadMotion :: MonadIO m => Event -> m (Maybe EventMotion)
+eventReadMotion s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventMotion)
-    val' <- (newPtr 80 EventMotion) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 80 EventMotion) val'
+        return val''
+    return result
 
-eventReadButton :: Event -> IO EventButton
-eventReadButton s = withManagedPtr s $ \ptr -> do
+eventWriteMotion :: MonadIO m => Event -> Ptr EventMotion -> m ()
+eventWriteMotion s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventMotion)
+
+eventClearMotion :: MonadIO m => Event -> m ()
+eventClearMotion s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventMotion)
+
+data EventMotionFieldInfo
+instance AttrInfo EventMotionFieldInfo where
+    type AttrAllowedOps EventMotionFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventMotionFieldInfo = (~) (Ptr EventMotion)
+    type AttrBaseTypeConstraint EventMotionFieldInfo = (~) Event
+    type AttrGetType EventMotionFieldInfo = Maybe EventMotion
+    type AttrLabel EventMotionFieldInfo = "motion"
+    attrGet _ = eventReadMotion
+    attrSet _ = eventWriteMotion
+    attrConstruct = undefined
+    attrClear _ = eventClearMotion
+
+eventMotion :: AttrLabelProxy "motion"
+eventMotion = AttrLabelProxy
+
+
+eventReadButton :: MonadIO m => Event -> m (Maybe EventButton)
+eventReadButton s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventButton)
-    val' <- (newPtr 80 EventButton) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 80 EventButton) val'
+        return val''
+    return result
 
-eventReadTouch :: Event -> IO EventTouch
-eventReadTouch s = withManagedPtr s $ \ptr -> do
+eventWriteButton :: MonadIO m => Event -> Ptr EventButton -> m ()
+eventWriteButton s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventButton)
+
+eventClearButton :: MonadIO m => Event -> m ()
+eventClearButton s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventButton)
+
+data EventButtonFieldInfo
+instance AttrInfo EventButtonFieldInfo where
+    type AttrAllowedOps EventButtonFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventButtonFieldInfo = (~) (Ptr EventButton)
+    type AttrBaseTypeConstraint EventButtonFieldInfo = (~) Event
+    type AttrGetType EventButtonFieldInfo = Maybe EventButton
+    type AttrLabel EventButtonFieldInfo = "button"
+    attrGet _ = eventReadButton
+    attrSet _ = eventWriteButton
+    attrConstruct = undefined
+    attrClear _ = eventClearButton
+
+eventButton :: AttrLabelProxy "button"
+eventButton = AttrLabelProxy
+
+
+eventReadTouch :: MonadIO m => Event -> m (Maybe EventTouch)
+eventReadTouch s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventTouch)
-    val' <- (newPtr 96 EventTouch) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 96 EventTouch) val'
+        return val''
+    return result
 
-eventReadScroll :: Event -> IO EventScroll
-eventReadScroll s = withManagedPtr s $ \ptr -> do
+eventWriteTouch :: MonadIO m => Event -> Ptr EventTouch -> m ()
+eventWriteTouch s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventTouch)
+
+eventClearTouch :: MonadIO m => Event -> m ()
+eventClearTouch s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventTouch)
+
+data EventTouchFieldInfo
+instance AttrInfo EventTouchFieldInfo where
+    type AttrAllowedOps EventTouchFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventTouchFieldInfo = (~) (Ptr EventTouch)
+    type AttrBaseTypeConstraint EventTouchFieldInfo = (~) Event
+    type AttrGetType EventTouchFieldInfo = Maybe EventTouch
+    type AttrLabel EventTouchFieldInfo = "touch"
+    attrGet _ = eventReadTouch
+    attrSet _ = eventWriteTouch
+    attrConstruct = undefined
+    attrClear _ = eventClearTouch
+
+eventTouch :: AttrLabelProxy "touch"
+eventTouch = AttrLabelProxy
+
+
+eventReadScroll :: MonadIO m => Event -> m (Maybe EventScroll)
+eventReadScroll s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventScroll)
-    val' <- (newPtr 88 EventScroll) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 88 EventScroll) val'
+        return val''
+    return result
 
-eventReadKey :: Event -> IO EventKey
-eventReadKey s = withManagedPtr s $ \ptr -> do
+eventWriteScroll :: MonadIO m => Event -> Ptr EventScroll -> m ()
+eventWriteScroll s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventScroll)
+
+eventClearScroll :: MonadIO m => Event -> m ()
+eventClearScroll s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventScroll)
+
+data EventScrollFieldInfo
+instance AttrInfo EventScrollFieldInfo where
+    type AttrAllowedOps EventScrollFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventScrollFieldInfo = (~) (Ptr EventScroll)
+    type AttrBaseTypeConstraint EventScrollFieldInfo = (~) Event
+    type AttrGetType EventScrollFieldInfo = Maybe EventScroll
+    type AttrLabel EventScrollFieldInfo = "scroll"
+    attrGet _ = eventReadScroll
+    attrSet _ = eventWriteScroll
+    attrConstruct = undefined
+    attrClear _ = eventClearScroll
+
+eventScroll :: AttrLabelProxy "scroll"
+eventScroll = AttrLabelProxy
+
+
+eventReadKey :: MonadIO m => Event -> m (Maybe EventKey)
+eventReadKey s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventKey)
-    val' <- (newPtr 56 EventKey) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 56 EventKey) val'
+        return val''
+    return result
 
-eventReadCrossing :: Event -> IO EventCrossing
-eventReadCrossing s = withManagedPtr s $ \ptr -> do
+eventWriteKey :: MonadIO m => Event -> Ptr EventKey -> m ()
+eventWriteKey s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventKey)
+
+eventClearKey :: MonadIO m => Event -> m ()
+eventClearKey s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventKey)
+
+data EventKeyFieldInfo
+instance AttrInfo EventKeyFieldInfo where
+    type AttrAllowedOps EventKeyFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventKeyFieldInfo = (~) (Ptr EventKey)
+    type AttrBaseTypeConstraint EventKeyFieldInfo = (~) Event
+    type AttrGetType EventKeyFieldInfo = Maybe EventKey
+    type AttrLabel EventKeyFieldInfo = "key"
+    attrGet _ = eventReadKey
+    attrSet _ = eventWriteKey
+    attrConstruct = undefined
+    attrClear _ = eventClearKey
+
+eventKey :: AttrLabelProxy "key"
+eventKey = AttrLabelProxy
+
+
+eventReadCrossing :: MonadIO m => Event -> m (Maybe EventCrossing)
+eventReadCrossing s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventCrossing)
-    val' <- (newPtr 88 EventCrossing) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 88 EventCrossing) val'
+        return val''
+    return result
 
-eventReadFocusChange :: Event -> IO EventFocus
-eventReadFocusChange s = withManagedPtr s $ \ptr -> do
+eventWriteCrossing :: MonadIO m => Event -> Ptr EventCrossing -> m ()
+eventWriteCrossing s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventCrossing)
+
+eventClearCrossing :: MonadIO m => Event -> m ()
+eventClearCrossing s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventCrossing)
+
+data EventCrossingFieldInfo
+instance AttrInfo EventCrossingFieldInfo where
+    type AttrAllowedOps EventCrossingFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventCrossingFieldInfo = (~) (Ptr EventCrossing)
+    type AttrBaseTypeConstraint EventCrossingFieldInfo = (~) Event
+    type AttrGetType EventCrossingFieldInfo = Maybe EventCrossing
+    type AttrLabel EventCrossingFieldInfo = "crossing"
+    attrGet _ = eventReadCrossing
+    attrSet _ = eventWriteCrossing
+    attrConstruct = undefined
+    attrClear _ = eventClearCrossing
+
+eventCrossing :: AttrLabelProxy "crossing"
+eventCrossing = AttrLabelProxy
+
+
+eventReadFocusChange :: MonadIO m => Event -> m (Maybe EventFocus)
+eventReadFocusChange s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventFocus)
-    val' <- (newPtr 24 EventFocus) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 24 EventFocus) val'
+        return val''
+    return result
 
-eventReadConfigure :: Event -> IO EventConfigure
-eventReadConfigure s = withManagedPtr s $ \ptr -> do
+eventWriteFocusChange :: MonadIO m => Event -> Ptr EventFocus -> m ()
+eventWriteFocusChange s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventFocus)
+
+eventClearFocusChange :: MonadIO m => Event -> m ()
+eventClearFocusChange s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventFocus)
+
+data EventFocusChangeFieldInfo
+instance AttrInfo EventFocusChangeFieldInfo where
+    type AttrAllowedOps EventFocusChangeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventFocusChangeFieldInfo = (~) (Ptr EventFocus)
+    type AttrBaseTypeConstraint EventFocusChangeFieldInfo = (~) Event
+    type AttrGetType EventFocusChangeFieldInfo = Maybe EventFocus
+    type AttrLabel EventFocusChangeFieldInfo = "focus_change"
+    attrGet _ = eventReadFocusChange
+    attrSet _ = eventWriteFocusChange
+    attrConstruct = undefined
+    attrClear _ = eventClearFocusChange
+
+eventFocusChange :: AttrLabelProxy "focusChange"
+eventFocusChange = AttrLabelProxy
+
+
+eventReadConfigure :: MonadIO m => Event -> m (Maybe EventConfigure)
+eventReadConfigure s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventConfigure)
-    val' <- (newPtr 40 EventConfigure) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 40 EventConfigure) val'
+        return val''
+    return result
 
-eventReadProperty :: Event -> IO EventProperty
-eventReadProperty s = withManagedPtr s $ \ptr -> do
+eventWriteConfigure :: MonadIO m => Event -> Ptr EventConfigure -> m ()
+eventWriteConfigure s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventConfigure)
+
+eventClearConfigure :: MonadIO m => Event -> m ()
+eventClearConfigure s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventConfigure)
+
+data EventConfigureFieldInfo
+instance AttrInfo EventConfigureFieldInfo where
+    type AttrAllowedOps EventConfigureFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventConfigureFieldInfo = (~) (Ptr EventConfigure)
+    type AttrBaseTypeConstraint EventConfigureFieldInfo = (~) Event
+    type AttrGetType EventConfigureFieldInfo = Maybe EventConfigure
+    type AttrLabel EventConfigureFieldInfo = "configure"
+    attrGet _ = eventReadConfigure
+    attrSet _ = eventWriteConfigure
+    attrConstruct = undefined
+    attrClear _ = eventClearConfigure
+
+eventConfigure :: AttrLabelProxy "configure"
+eventConfigure = AttrLabelProxy
+
+
+eventReadProperty :: MonadIO m => Event -> m (Maybe EventProperty)
+eventReadProperty s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventProperty)
-    val' <- (newPtr 40 EventProperty) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 40 EventProperty) val'
+        return val''
+    return result
 
-eventReadSelection :: Event -> IO EventSelection
-eventReadSelection s = withManagedPtr s $ \ptr -> do
+eventWriteProperty :: MonadIO m => Event -> Ptr EventProperty -> m ()
+eventWriteProperty s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventProperty)
+
+eventClearProperty :: MonadIO m => Event -> m ()
+eventClearProperty s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventProperty)
+
+data EventPropertyFieldInfo
+instance AttrInfo EventPropertyFieldInfo where
+    type AttrAllowedOps EventPropertyFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventPropertyFieldInfo = (~) (Ptr EventProperty)
+    type AttrBaseTypeConstraint EventPropertyFieldInfo = (~) Event
+    type AttrGetType EventPropertyFieldInfo = Maybe EventProperty
+    type AttrLabel EventPropertyFieldInfo = "property"
+    attrGet _ = eventReadProperty
+    attrSet _ = eventWriteProperty
+    attrConstruct = undefined
+    attrClear _ = eventClearProperty
+
+eventProperty :: AttrLabelProxy "property"
+eventProperty = AttrLabelProxy
+
+
+eventReadSelection :: MonadIO m => Event -> m (Maybe EventSelection)
+eventReadSelection s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventSelection)
-    val' <- (newPtr 64 EventSelection) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 64 EventSelection) val'
+        return val''
+    return result
 
-eventReadOwnerChange :: Event -> IO EventOwnerChange
-eventReadOwnerChange s = withManagedPtr s $ \ptr -> do
+eventWriteSelection :: MonadIO m => Event -> Ptr EventSelection -> m ()
+eventWriteSelection s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventSelection)
+
+eventClearSelection :: MonadIO m => Event -> m ()
+eventClearSelection s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventSelection)
+
+data EventSelectionFieldInfo
+instance AttrInfo EventSelectionFieldInfo where
+    type AttrAllowedOps EventSelectionFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventSelectionFieldInfo = (~) (Ptr EventSelection)
+    type AttrBaseTypeConstraint EventSelectionFieldInfo = (~) Event
+    type AttrGetType EventSelectionFieldInfo = Maybe EventSelection
+    type AttrLabel EventSelectionFieldInfo = "selection"
+    attrGet _ = eventReadSelection
+    attrSet _ = eventWriteSelection
+    attrConstruct = undefined
+    attrClear _ = eventClearSelection
+
+eventSelection :: AttrLabelProxy "selection"
+eventSelection = AttrLabelProxy
+
+
+eventReadOwnerChange :: MonadIO m => Event -> m (Maybe EventOwnerChange)
+eventReadOwnerChange s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventOwnerChange)
-    val' <- (newPtr 56 EventOwnerChange) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 56 EventOwnerChange) val'
+        return val''
+    return result
 
-eventReadProximity :: Event -> IO EventProximity
-eventReadProximity s = withManagedPtr s $ \ptr -> do
+eventWriteOwnerChange :: MonadIO m => Event -> Ptr EventOwnerChange -> m ()
+eventWriteOwnerChange s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventOwnerChange)
+
+eventClearOwnerChange :: MonadIO m => Event -> m ()
+eventClearOwnerChange s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventOwnerChange)
+
+data EventOwnerChangeFieldInfo
+instance AttrInfo EventOwnerChangeFieldInfo where
+    type AttrAllowedOps EventOwnerChangeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventOwnerChangeFieldInfo = (~) (Ptr EventOwnerChange)
+    type AttrBaseTypeConstraint EventOwnerChangeFieldInfo = (~) Event
+    type AttrGetType EventOwnerChangeFieldInfo = Maybe EventOwnerChange
+    type AttrLabel EventOwnerChangeFieldInfo = "owner_change"
+    attrGet _ = eventReadOwnerChange
+    attrSet _ = eventWriteOwnerChange
+    attrConstruct = undefined
+    attrClear _ = eventClearOwnerChange
+
+eventOwnerChange :: AttrLabelProxy "ownerChange"
+eventOwnerChange = AttrLabelProxy
+
+
+eventReadProximity :: MonadIO m => Event -> m (Maybe EventProximity)
+eventReadProximity s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventProximity)
-    val' <- (newPtr 32 EventProximity) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 32 EventProximity) val'
+        return val''
+    return result
 
-eventReadDnd :: Event -> IO EventDND
-eventReadDnd s = withManagedPtr s $ \ptr -> do
+eventWriteProximity :: MonadIO m => Event -> Ptr EventProximity -> m ()
+eventWriteProximity s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventProximity)
+
+eventClearProximity :: MonadIO m => Event -> m ()
+eventClearProximity s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventProximity)
+
+data EventProximityFieldInfo
+instance AttrInfo EventProximityFieldInfo where
+    type AttrAllowedOps EventProximityFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventProximityFieldInfo = (~) (Ptr EventProximity)
+    type AttrBaseTypeConstraint EventProximityFieldInfo = (~) Event
+    type AttrGetType EventProximityFieldInfo = Maybe EventProximity
+    type AttrLabel EventProximityFieldInfo = "proximity"
+    attrGet _ = eventReadProximity
+    attrSet _ = eventWriteProximity
+    attrConstruct = undefined
+    attrClear _ = eventClearProximity
+
+eventProximity :: AttrLabelProxy "proximity"
+eventProximity = AttrLabelProxy
+
+
+eventReadDnd :: MonadIO m => Event -> m (Maybe EventDND)
+eventReadDnd s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventDND)
-    val' <- (newPtr 40 EventDND) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 40 EventDND) val'
+        return val''
+    return result
 
-eventReadWindowState :: Event -> IO EventWindowState
-eventReadWindowState s = withManagedPtr s $ \ptr -> do
+eventWriteDnd :: MonadIO m => Event -> Ptr EventDND -> m ()
+eventWriteDnd s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventDND)
+
+eventClearDnd :: MonadIO m => Event -> m ()
+eventClearDnd s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventDND)
+
+data EventDndFieldInfo
+instance AttrInfo EventDndFieldInfo where
+    type AttrAllowedOps EventDndFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventDndFieldInfo = (~) (Ptr EventDND)
+    type AttrBaseTypeConstraint EventDndFieldInfo = (~) Event
+    type AttrGetType EventDndFieldInfo = Maybe EventDND
+    type AttrLabel EventDndFieldInfo = "dnd"
+    attrGet _ = eventReadDnd
+    attrSet _ = eventWriteDnd
+    attrConstruct = undefined
+    attrClear _ = eventClearDnd
+
+eventDnd :: AttrLabelProxy "dnd"
+eventDnd = AttrLabelProxy
+
+
+eventReadWindowState :: MonadIO m => Event -> m (Maybe EventWindowState)
+eventReadWindowState s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventWindowState)
-    val' <- (newPtr 32 EventWindowState) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 32 EventWindowState) val'
+        return val''
+    return result
 
-eventReadSetting :: Event -> IO EventSetting
-eventReadSetting s = withManagedPtr s $ \ptr -> do
+eventWriteWindowState :: MonadIO m => Event -> Ptr EventWindowState -> m ()
+eventWriteWindowState s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventWindowState)
+
+eventClearWindowState :: MonadIO m => Event -> m ()
+eventClearWindowState s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventWindowState)
+
+data EventWindowStateFieldInfo
+instance AttrInfo EventWindowStateFieldInfo where
+    type AttrAllowedOps EventWindowStateFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventWindowStateFieldInfo = (~) (Ptr EventWindowState)
+    type AttrBaseTypeConstraint EventWindowStateFieldInfo = (~) Event
+    type AttrGetType EventWindowStateFieldInfo = Maybe EventWindowState
+    type AttrLabel EventWindowStateFieldInfo = "window_state"
+    attrGet _ = eventReadWindowState
+    attrSet _ = eventWriteWindowState
+    attrConstruct = undefined
+    attrClear _ = eventClearWindowState
+
+eventWindowState :: AttrLabelProxy "windowState"
+eventWindowState = AttrLabelProxy
+
+
+eventReadSetting :: MonadIO m => Event -> m (Maybe EventSetting)
+eventReadSetting s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventSetting)
-    val' <- (newPtr 32 EventSetting) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 32 EventSetting) val'
+        return val''
+    return result
 
-eventReadGrabBroken :: Event -> IO EventGrabBroken
-eventReadGrabBroken s = withManagedPtr s $ \ptr -> do
+eventWriteSetting :: MonadIO m => Event -> Ptr EventSetting -> m ()
+eventWriteSetting s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventSetting)
+
+eventClearSetting :: MonadIO m => Event -> m ()
+eventClearSetting s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventSetting)
+
+data EventSettingFieldInfo
+instance AttrInfo EventSettingFieldInfo where
+    type AttrAllowedOps EventSettingFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventSettingFieldInfo = (~) (Ptr EventSetting)
+    type AttrBaseTypeConstraint EventSettingFieldInfo = (~) Event
+    type AttrGetType EventSettingFieldInfo = Maybe EventSetting
+    type AttrLabel EventSettingFieldInfo = "setting"
+    attrGet _ = eventReadSetting
+    attrSet _ = eventWriteSetting
+    attrConstruct = undefined
+    attrClear _ = eventClearSetting
+
+eventSetting :: AttrLabelProxy "setting"
+eventSetting = AttrLabelProxy
+
+
+eventReadGrabBroken :: MonadIO m => Event -> m (Maybe EventGrabBroken)
+eventReadGrabBroken s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventGrabBroken)
-    val' <- (newPtr 40 EventGrabBroken) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 40 EventGrabBroken) val'
+        return val''
+    return result
 
-eventReadTouchpadSwipe :: Event -> IO EventTouchpadSwipe
-eventReadTouchpadSwipe s = withManagedPtr s $ \ptr -> do
+eventWriteGrabBroken :: MonadIO m => Event -> Ptr EventGrabBroken -> m ()
+eventWriteGrabBroken s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventGrabBroken)
+
+eventClearGrabBroken :: MonadIO m => Event -> m ()
+eventClearGrabBroken s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventGrabBroken)
+
+data EventGrabBrokenFieldInfo
+instance AttrInfo EventGrabBrokenFieldInfo where
+    type AttrAllowedOps EventGrabBrokenFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventGrabBrokenFieldInfo = (~) (Ptr EventGrabBroken)
+    type AttrBaseTypeConstraint EventGrabBrokenFieldInfo = (~) Event
+    type AttrGetType EventGrabBrokenFieldInfo = Maybe EventGrabBroken
+    type AttrLabel EventGrabBrokenFieldInfo = "grab_broken"
+    attrGet _ = eventReadGrabBroken
+    attrSet _ = eventWriteGrabBroken
+    attrConstruct = undefined
+    attrClear _ = eventClearGrabBroken
+
+eventGrabBroken :: AttrLabelProxy "grabBroken"
+eventGrabBroken = AttrLabelProxy
+
+
+eventReadTouchpadSwipe :: MonadIO m => Event -> m (Maybe EventTouchpadSwipe)
+eventReadTouchpadSwipe s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventTouchpadSwipe)
-    val' <- (newPtr 88 EventTouchpadSwipe) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 88 EventTouchpadSwipe) val'
+        return val''
+    return result
 
-eventReadTouchpadPinch :: Event -> IO EventTouchpadPinch
-eventReadTouchpadPinch s = withManagedPtr s $ \ptr -> do
+eventWriteTouchpadSwipe :: MonadIO m => Event -> Ptr EventTouchpadSwipe -> m ()
+eventWriteTouchpadSwipe s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventTouchpadSwipe)
+
+eventClearTouchpadSwipe :: MonadIO m => Event -> m ()
+eventClearTouchpadSwipe s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventTouchpadSwipe)
+
+data EventTouchpadSwipeFieldInfo
+instance AttrInfo EventTouchpadSwipeFieldInfo where
+    type AttrAllowedOps EventTouchpadSwipeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventTouchpadSwipeFieldInfo = (~) (Ptr EventTouchpadSwipe)
+    type AttrBaseTypeConstraint EventTouchpadSwipeFieldInfo = (~) Event
+    type AttrGetType EventTouchpadSwipeFieldInfo = Maybe EventTouchpadSwipe
+    type AttrLabel EventTouchpadSwipeFieldInfo = "touchpad_swipe"
+    attrGet _ = eventReadTouchpadSwipe
+    attrSet _ = eventWriteTouchpadSwipe
+    attrConstruct = undefined
+    attrClear _ = eventClearTouchpadSwipe
+
+eventTouchpadSwipe :: AttrLabelProxy "touchpadSwipe"
+eventTouchpadSwipe = AttrLabelProxy
+
+
+eventReadTouchpadPinch :: MonadIO m => Event -> m (Maybe EventTouchpadPinch)
+eventReadTouchpadPinch s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventTouchpadPinch)
-    val' <- (newPtr 104 EventTouchpadPinch) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 104 EventTouchpadPinch) val'
+        return val''
+    return result
 
+eventWriteTouchpadPinch :: MonadIO m => Event -> Ptr EventTouchpadPinch -> m ()
+eventWriteTouchpadPinch s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EventTouchpadPinch)
+
+eventClearTouchpadPinch :: MonadIO m => Event -> m ()
+eventClearTouchpadPinch s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EventTouchpadPinch)
+
+data EventTouchpadPinchFieldInfo
+instance AttrInfo EventTouchpadPinchFieldInfo where
+    type AttrAllowedOps EventTouchpadPinchFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EventTouchpadPinchFieldInfo = (~) (Ptr EventTouchpadPinch)
+    type AttrBaseTypeConstraint EventTouchpadPinchFieldInfo = (~) Event
+    type AttrGetType EventTouchpadPinchFieldInfo = Maybe EventTouchpadPinch
+    type AttrLabel EventTouchpadPinchFieldInfo = "touchpad_pinch"
+    attrGet _ = eventReadTouchpadPinch
+    attrSet _ = eventWriteTouchpadPinch
+    attrConstruct = undefined
+    attrClear _ = eventClearTouchpadPinch
+
+eventTouchpadPinch :: AttrLabelProxy "touchpadPinch"
+eventTouchpadPinch = AttrLabelProxy
+
+
+
+type instance AttributeList Event = EventAttributeList
+type EventAttributeList = ('[ '("type", EventTypeFieldInfo), '("any", EventAnyFieldInfo), '("expose", EventExposeFieldInfo), '("visibility", EventVisibilityFieldInfo), '("motion", EventMotionFieldInfo), '("button", EventButtonFieldInfo), '("touch", EventTouchFieldInfo), '("scroll", EventScrollFieldInfo), '("key", EventKeyFieldInfo), '("crossing", EventCrossingFieldInfo), '("focusChange", EventFocusChangeFieldInfo), '("configure", EventConfigureFieldInfo), '("property", EventPropertyFieldInfo), '("selection", EventSelectionFieldInfo), '("ownerChange", EventOwnerChangeFieldInfo), '("proximity", EventProximityFieldInfo), '("dnd", EventDndFieldInfo), '("windowState", EventWindowStateFieldInfo), '("setting", EventSettingFieldInfo), '("grabBroken", EventGrabBrokenFieldInfo), '("touchpadSwipe", EventTouchpadSwipeFieldInfo), '("touchpadPinch", EventTouchpadPinchFieldInfo)] :: [(Symbol, *)])
+
 -- method Event::new
 -- method type : Constructor
 -- Args : [Arg {argCName = "type", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Event"
+-- returnType : Just (TInterface "Gdk" "Event")
 -- throws : False
 -- Skip return : False
 
@@ -436,7 +1079,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Event"
+-- returnType : Just (TInterface "Gdk" "Event")
 -- throws : False
 -- Skip return : False
 
@@ -465,7 +1108,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -492,7 +1135,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "axis_use", argType = TInterface "Gdk" "AxisUse", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -526,15 +1169,15 @@
 
 -- method Event::get_button
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "button", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_event_get_button" gdk_event_get_button :: 
     Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
-    Ptr Word32 ->                           -- button : TBasicType TUInt32
+    Ptr Word32 ->                           -- button : TBasicType TUInt
     IO CInt
 
 
@@ -558,15 +1201,15 @@
 
 -- method Event::get_click_count
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "click_count", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "click_count", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_event_get_click_count" gdk_event_get_click_count :: 
     Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
-    Ptr Word32 ->                           -- click_count : TBasicType TUInt32
+    Ptr Word32 ->                           -- click_count : TBasicType TUInt
     IO CInt
 
 
@@ -592,7 +1235,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_win", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y_win", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -630,7 +1273,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Device"
+-- returnType : Just (TInterface "Gdk" "Device")
 -- throws : False
 -- Skip return : False
 
@@ -642,24 +1285,25 @@
 eventGetDevice ::
     (MonadIO m) =>
     Event                                   -- _obj
-    -> m Device                             -- result
+    -> m (Maybe Device)                     -- result
 eventGetDevice _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- gdk_event_get_device _obj'
-    checkUnexpectedReturnNULL "gdk_event_get_device" result
-    result' <- (newObject Device) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Device) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data EventGetDeviceMethodInfo
-instance (signature ~ (m Device), MonadIO m) => MethodInfo EventGetDeviceMethodInfo Event signature where
+instance (signature ~ (m (Maybe Device)), MonadIO m) => MethodInfo EventGetDeviceMethodInfo Event signature where
     overloadedMethod _ = eventGetDevice
 
 -- method Event::get_event_sequence
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "EventSequence"
+-- returnType : Just (TInterface "Gdk" "EventSequence")
 -- throws : False
 -- Skip return : False
 
@@ -688,7 +1332,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "EventType"
+-- returnType : Just (TInterface "Gdk" "EventType")
 -- throws : False
 -- Skip return : False
 
@@ -716,7 +1360,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keycode", argType = TBasicType TUInt16, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -746,15 +1390,15 @@
 
 -- method Event::get_keyval
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_event_get_keyval" gdk_event_get_keyval :: 
     Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
-    Ptr Word32 ->                           -- keyval : TBasicType TUInt32
+    Ptr Word32 ->                           -- keyval : TBasicType TUInt
     IO CInt
 
 
@@ -780,7 +1424,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_root", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y_root", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -818,7 +1462,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Screen"
+-- returnType : Just (TInterface "Gdk" "Screen")
 -- throws : False
 -- Skip return : False
 
@@ -847,7 +1491,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "delta_x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "delta_y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -885,7 +1529,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "direction", argType = TInterface "Gdk" "ScrollDirection", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -918,7 +1562,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Device"
+-- returnType : Just (TInterface "Gdk" "Device")
 -- throws : False
 -- Skip return : False
 
@@ -930,24 +1574,25 @@
 eventGetSourceDevice ::
     (MonadIO m) =>
     Event                                   -- _obj
-    -> m Device                             -- result
+    -> m (Maybe Device)                     -- result
 eventGetSourceDevice _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- gdk_event_get_source_device _obj'
-    checkUnexpectedReturnNULL "gdk_event_get_source_device" result
-    result' <- (newObject Device) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Device) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data EventGetSourceDeviceMethodInfo
-instance (signature ~ (m Device), MonadIO m) => MethodInfo EventGetSourceDeviceMethodInfo Event signature where
+instance (signature ~ (m (Maybe Device)), MonadIO m) => MethodInfo EventGetSourceDeviceMethodInfo Event signature where
     overloadedMethod _ = eventGetSourceDevice
 
 -- method Event::get_state
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -980,7 +1625,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt32)
 -- throws : False
 -- Skip return : False
 
@@ -1007,7 +1652,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Gdk" "Window"
+-- returnType : Just (TInterface "Gdk" "Window")
 -- throws : False
 -- Skip return : False
 
@@ -1036,7 +1681,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1063,7 +1708,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1094,7 +1739,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1125,7 +1770,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -1156,7 +1801,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1184,7 +1829,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "Event"
+-- returnType : Just (TInterface "Gdk" "Event")
 -- throws : False
 -- Skip return : False
 
@@ -1194,24 +1839,25 @@
 
 eventGet ::
     (MonadIO m) =>
-    m Event                                 -- result
+    m (Maybe Event)                         -- result
 eventGet  = liftIO $ do
     result <- gdk_event_get
-    checkUnexpectedReturnNULL "gdk_event_get" result
-    result' <- (wrapBoxed Event) result
-    return result'
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed Event) result'
+        return result''
+    return maybeResult
 
 -- method Event::handler_set
 -- method type : MemberFunction
--- Args : [Arg {argCName = "func", argType = TInterface "Gdk" "EventFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 1, argDestroy = 2, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "func", argType = TInterface "Gdk" "EventFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 1, argDestroy = 2, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "gdk_event_handler_set" gdk_event_handler_set :: 
     FunPtr EventFuncC ->                    -- func : TInterface "Gdk" "EventFunc"
-    Ptr () ->                               -- data : TBasicType TVoid
+    Ptr () ->                               -- data : TBasicType TPtr
     FunPtr GLib.DestroyNotifyC ->           -- notify : TInterface "GLib" "DestroyNotify"
     IO ()
 
@@ -1231,7 +1877,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Gdk" "Event"
+-- returnType : Just (TInterface "Gdk" "Event")
 -- throws : False
 -- Skip return : False
 
@@ -1241,18 +1887,19 @@
 
 eventPeek ::
     (MonadIO m) =>
-    m Event                                 -- result
+    m (Maybe Event)                         -- result
 eventPeek  = liftIO $ do
     result <- gdk_event_peek
-    checkUnexpectedReturnNULL "gdk_event_peek" result
-    result' <- (wrapBoxed Event) result
-    return result'
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed Event) result'
+        return result''
+    return maybeResult
 
 -- method Event::request_motions
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "event", argType = TInterface "Gdk" "EventMotion", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Gdk/Unions/Event.hs-boot b/GI/Gdk/Unions/Event.hs-boot
--- a/GI/Gdk/Unions/Event.hs-boot
+++ b/GI/Gdk/Unions/Event.hs-boot
@@ -1,8 +1,8 @@
 module GI.Gdk.Unions.Event where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/gi-gdk.cabal b/gi-gdk.cabal
--- a/gi-gdk.cabal
+++ b/gi-gdk.cabal
@@ -1,6 +1,6 @@
 -- Autogenerated, do not edit.
 name:               gi-gdk
-version:            0.3.18.13
+version:            0.3.18.14
 synopsis:           Gdk bindings
 description:        Bindings for Gdk, autogenerated by haskell-gi.
 homepage:           https://github.com/haskell-gi/haskell-gi
@@ -14,7 +14,7 @@
 
 library
     default-language:   Haskell2010
-    default-extensions: ScopedTypeVariables, CPP, OverloadedStrings, NegativeLiterals, ConstraintKinds, TypeFamilies, MultiParamTypeClasses, KindSignatures, FlexibleInstances, UndecidableInstances, DataKinds, FlexibleContexts
+    default-extensions: NoImplicitPrelude, ScopedTypeVariables, CPP, OverloadedStrings, NegativeLiterals, ConstraintKinds, TypeFamilies, MultiParamTypeClasses, KindSignatures, FlexibleInstances, UndecidableInstances, DataKinds, FlexibleContexts
     other-extensions:   PatternSynonyms ViewPatterns
     ghc-options:        -fno-warn-unused-imports -fno-warn-warnings-deprecations
     exposed-modules:    GI.Gdk.Types
@@ -76,13 +76,13 @@
                         GI.Gdk.Unions.Event
     pkgconfig-depends:  gdk-3.0 >= 3.18
     build-depends: base >= 4.7 && <5,
-        haskell-gi-base >= 0.13 && < 1,
-        gi-glib >= 0.2.46.13 && < 0.2.47,
-        gi-gobject >= 0.2.46.13 && < 0.2.47,
-        gi-gdkpixbuf >= 0.2.32.13 && < 0.2.33,
-        gi-gio >= 0.2.46.13 && < 0.2.47,
-        gi-pango >= 0.1.38.13 && < 0.1.39,
-        gi-cairo >= 0.1.14.13 && < 0.1.15,
+        haskell-gi-base >= 0.14 && < 1,
+        gi-glib >= 0.2.46.14 && < 0.2.47,
+        gi-gobject >= 0.2.46.14 && < 0.2.47,
+        gi-gdkpixbuf >= 0.2.32.14 && < 0.2.33,
+        gi-gio >= 0.2.46.14 && < 0.2.47,
+        gi-pango >= 0.1.38.14 && < 0.1.39,
+        gi-cairo >= 0.1.14.14 && < 0.1.15,
         bytestring >= 0.10,
         containers >= 0.5,
         text >= 1.0,
