diff --git a/GI/Pango.hs b/GI/Pango.hs
--- a/GI/Pango.hs
+++ b/GI/Pango.hs
@@ -30,9 +30,9 @@
 import GI.Pango.Objects
 import GI.Pango.Structs
 
-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/Pango/Callbacks.hs b/GI/Pango/Callbacks.hs
--- a/GI/Pango/Callbacks.hs
+++ b/GI/Pango/Callbacks.hs
@@ -77,9 +77,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/Pango/Constants.hs b/GI/Pango/Constants.hs
--- a/GI/Pango/Constants.hs
+++ b/GI/Pango/Constants.hs
@@ -24,9 +24,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/Pango/Enums.hs b/GI/Pango/Enums.hs
--- a/GI/Pango/Enums.hs
+++ b/GI/Pango/Enums.hs
@@ -31,9 +31,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/Pango/Flags.hs b/GI/Pango/Flags.hs
--- a/GI/Pango/Flags.hs
+++ b/GI/Pango/Flags.hs
@@ -15,9 +15,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
@@ -60,8 +60,8 @@
 foreign import ccall "pango_font_mask_get_type" c_pango_font_mask_get_type :: 
     IO GType
 
-instance BoxedEnum FontMask where
-    boxedEnumType _ = c_pango_font_mask_get_type
+instance BoxedFlags FontMask where
+    boxedFlagsType _ = c_pango_font_mask_get_type
 
 instance IsGFlag FontMask
 
diff --git a/GI/Pango/Functions.hs b/GI/Pango/Functions.hs
--- a/GI/Pango/Functions.hs
+++ b/GI/Pango/Functions.hs
@@ -10,6 +10,82 @@
     ( 
 
  -- * Methods
+-- ** attrBackgroundAlphaNew
+    attrBackgroundAlphaNew                  ,
+
+
+-- ** attrBackgroundNew
+    attrBackgroundNew                       ,
+
+
+-- ** attrFallbackNew
+    attrFallbackNew                         ,
+
+
+-- ** attrFamilyNew
+    attrFamilyNew                           ,
+
+
+-- ** attrForegroundAlphaNew
+    attrForegroundAlphaNew                  ,
+
+
+-- ** attrForegroundNew
+    attrForegroundNew                       ,
+
+
+-- ** attrGravityHintNew
+    attrGravityHintNew                      ,
+
+
+-- ** attrGravityNew
+    attrGravityNew                          ,
+
+
+-- ** attrLetterSpacingNew
+    attrLetterSpacingNew                    ,
+
+
+-- ** attrRiseNew
+    attrRiseNew                             ,
+
+
+-- ** attrScaleNew
+    attrScaleNew                            ,
+
+
+-- ** attrStretchNew
+    attrStretchNew                          ,
+
+
+-- ** attrStrikethroughColorNew
+    attrStrikethroughColorNew               ,
+
+
+-- ** attrStrikethroughNew
+    attrStrikethroughNew                    ,
+
+
+-- ** attrStyleNew
+    attrStyleNew                            ,
+
+
+-- ** attrUnderlineColorNew
+    attrUnderlineColorNew                   ,
+
+
+-- ** attrUnderlineNew
+    attrUnderlineNew                        ,
+
+
+-- ** attrVariantNew
+    attrVariantNew                          ,
+
+
+-- ** attrWeightNew
+    attrWeightNew                           ,
+
+
 -- ** break
     break                                   ,
 
@@ -182,9 +258,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
@@ -196,7 +272,7 @@
 -- function pango_version_string
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -215,16 +291,16 @@
 
 
 -- function pango_version_check
--- Args : [Arg {argCName = "required_major", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "required_minor", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "required_micro", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "required_major", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "required_minor", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "required_micro", 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 "pango_version_check" pango_version_check :: 
-    Int32 ->                                -- required_major : TBasicType TInt32
-    Int32 ->                                -- required_minor : TBasicType TInt32
-    Int32 ->                                -- required_micro : TBasicType TInt32
+    Int32 ->                                -- required_major : TBasicType TInt
+    Int32 ->                                -- required_minor : TBasicType TInt
+    Int32 ->                                -- required_micro : TBasicType TInt
     IO CString
 
 
@@ -233,18 +309,19 @@
     Int32                                   -- requiredMajor
     -> Int32                                -- requiredMinor
     -> Int32                                -- requiredMicro
-    -> m T.Text                             -- result
+    -> m (Maybe T.Text)                     -- result
 versionCheck requiredMajor requiredMinor requiredMicro = liftIO $ do
     result <- pango_version_check requiredMajor requiredMinor requiredMicro
-    checkUnexpectedReturnNULL "pango_version_check" result
-    result' <- cstringToText result
-    return result'
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- cstringToText result'
+        return result''
+    return maybeResult
 
 
 -- function pango_version
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
@@ -261,14 +338,14 @@
 
 
 -- function pango_units_to_double
--- Args : [Arg {argCName = "i", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "i", argType = TBasicType TInt, 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
 
 foreign import ccall "pango_units_to_double" pango_units_to_double :: 
-    Int32 ->                                -- i : TBasicType TInt32
+    Int32 ->                                -- i : TBasicType TInt
     IO CDouble
 
 
@@ -285,7 +362,7 @@
 -- function pango_units_from_double
 -- Args : [Arg {argCName = "d", argType = TBasicType TDouble, 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
 
@@ -307,7 +384,7 @@
 -- function pango_unichar_direction
 -- Args : [Arg {argCName = "ch", argType = TBasicType TUniChar, 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
 
@@ -330,7 +407,7 @@
 -- function pango_trim_string
 -- 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
 
@@ -356,7 +433,7 @@
 -- function pango_split_file_list
 -- Args : [Arg {argCName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TCArray True (-1) (-1) (TBasicType TUTF8)
+-- returnType : Just (TCArray True (-1) (-1) (TBasicType TUTF8))
 -- throws : False
 -- Skip return : False
 
@@ -383,7 +460,7 @@
 -- function pango_skip_space
 -- Args : [Arg {argCName = "pos", argType = TBasicType TUTF8, 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
 
@@ -410,17 +487,17 @@
 
 
 -- function pango_shape_full
--- Args : [Arg {argCName = "item_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "item_length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "paragraph_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "paragraph_length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyphs", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "item_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "item_length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "paragraph_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "paragraph_length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyphs", argType = TInterface "Pango" "GlyphString", 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 "pango_shape_full" pango_shape_full :: 
     CString ->                              -- item_text : TBasicType TUTF8
-    Int32 ->                                -- item_length : TBasicType TInt32
+    Int32 ->                                -- item_length : TBasicType TInt
     CString ->                              -- paragraph_text : TBasicType TUTF8
-    Int32 ->                                -- paragraph_length : TBasicType TInt32
+    Int32 ->                                -- paragraph_length : TBasicType TInt
     Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
     Ptr GlyphString ->                      -- glyphs : TInterface "Pango" "GlyphString"
     IO ()
@@ -453,15 +530,15 @@
 
 
 -- function pango_shape
--- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyphs", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyphs", argType = TInterface "Pango" "GlyphString", 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 "pango_shape" pango_shape :: 
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
     Ptr GlyphString ->                      -- glyphs : TInterface "Pango" "GlyphString"
     IO ()
@@ -488,7 +565,7 @@
 -- function pango_scan_word
 -- Args : [Arg {argCName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "out", argType = TInterface "GLib" "String", 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
 
@@ -520,7 +597,7 @@
 -- function pango_scan_string
 -- Args : [Arg {argCName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "out", argType = TInterface "GLib" "String", 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
 
@@ -550,15 +627,15 @@
 
 
 -- function pango_scan_int
--- Args : [Arg {argCName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "out", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "out", argType = TBasicType TInt, 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 "pango_scan_int" pango_scan_int :: 
     Ptr CString ->                          -- pos : TBasicType TUTF8
-    Ptr Int32 ->                            -- out : TBasicType TInt32
+    Ptr Int32 ->                            -- out : TBasicType TInt
     IO CInt
 
 {-# DEPRECATED scanInt ["(Since version 1.38)"]#-}
@@ -585,7 +662,7 @@
 -- function pango_reorder_items
 -- Args : [Arg {argCName = "logical_items", argType = TGList (TInterface "Pango" "Item"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Pango" "Item")
+-- returnType : Just (TGList (TInterface "Pango" "Item"))
 -- throws : False
 -- Skip return : False
 
@@ -602,7 +679,6 @@
     let logicalItems' = map unsafeManagedPtrGetPtr logicalItems
     logicalItems'' <- packGList logicalItems'
     result <- pango_reorder_items logicalItems''
-    checkUnexpectedReturnNULL "pango_reorder_items" result
     result' <- unpackGList result
     result'' <- mapM (wrapBoxed Item) result'
     g_list_free result
@@ -612,14 +688,14 @@
 
 
 -- function pango_read_line
--- Args : [Arg {argCName = "stream", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "str", argType = TInterface "GLib" "String", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "stream", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "str", argType = TInterface "GLib" "String", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt32
+-- returnType : Just (TBasicType TInt)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_read_line" pango_read_line :: 
-    Ptr () ->                               -- stream : TBasicType TVoid
+    Ptr () ->                               -- stream : TBasicType TPtr
     Ptr GLib.String ->                      -- str : TInterface "GLib" "String"
     IO Int32
 
@@ -636,15 +712,15 @@
 
 
 -- function pango_quantize_line_geometry
--- Args : [Arg {argCName = "thickness", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "position", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "thickness", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "position", argType = TBasicType TInt, 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
 
 foreign import ccall "pango_quantize_line_geometry" pango_quantize_line_geometry :: 
-    Ptr Int32 ->                            -- thickness : TBasicType TInt32
-    Ptr Int32 ->                            -- position : TBasicType TInt32
+    Ptr Int32 ->                            -- thickness : TBasicType TInt
+    Ptr Int32 ->                            -- position : TBasicType TInt
     IO ()
 
 
@@ -669,7 +745,7 @@
 -- function pango_parse_weight
 -- Args : [Arg {argCName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "weight", argType = TInterface "Pango" "Weight", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "warn", 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
 
@@ -701,7 +777,7 @@
 -- function pango_parse_variant
 -- Args : [Arg {argCName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "variant", argType = TInterface "Pango" "Variant", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "warn", 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
 
@@ -733,7 +809,7 @@
 -- function pango_parse_style
 -- Args : [Arg {argCName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "style", argType = TInterface "Pango" "Style", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "warn", 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
 
@@ -765,7 +841,7 @@
 -- function pango_parse_stretch
 -- Args : [Arg {argCName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stretch", argType = TInterface "Pango" "Stretch", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "warn", 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
 
@@ -795,15 +871,15 @@
 
 
 -- function pango_parse_markup
--- Args : [Arg {argCName = "markup_text", argType = TBasicType TUTF8, 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 = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_list", argType = TInterface "Pango" "AttrList", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "accel_char", argType = TBasicType TUniChar, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "markup_text", argType = TBasicType TUTF8, 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 = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_list", argType = TInterface "Pango" "AttrList", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "accel_char", argType = TBasicType TUniChar, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : True
 -- Skip return : False
 
 foreign import ccall "pango_parse_markup" pango_parse_markup :: 
     CString ->                              -- markup_text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     CInt ->                                 -- accel_marker : TBasicType TUniChar
     Ptr (Ptr AttrList) ->                   -- attr_list : TInterface "Pango" "AttrList"
     Ptr CString ->                          -- text : TBasicType TUTF8
@@ -847,16 +923,16 @@
 
 
 -- function pango_parse_enum
--- Args : [Arg {argCName = "type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "possible_values", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "possible_values", argType = TBasicType TUTF8, 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 "pango_parse_enum" pango_parse_enum :: 
     CGType ->                               -- type : TBasicType TGType
     CString ->                              -- str : TBasicType TUTF8
-    Ptr Int32 ->                            -- value : TBasicType TInt32
+    Ptr Int32 ->                            -- value : TBasicType TInt
     CInt ->                                 -- warn : TBasicType TBoolean
     Ptr CString ->                          -- possible_values : TBasicType TUTF8
     IO CInt
@@ -893,7 +969,7 @@
 -- function pango_module_register
 -- Args : [Arg {argCName = "module", argType = TInterface "Pango" "IncludedModule", 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
 
@@ -916,7 +992,7 @@
 -- function pango_markup_parser_new
 -- Args : [Arg {argCName = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GLib" "MarkupParseContext"
+-- returnType : Just (TInterface "GLib" "MarkupParseContext")
 -- throws : False
 -- Skip return : False
 
@@ -940,7 +1016,7 @@
 -- function pango_markup_parser_finish
 -- Args : [Arg {argCName = "context", argType = TInterface "GLib" "MarkupParseContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_list", argType = TInterface "Pango" "AttrList", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "accel_char", argType = TBasicType TUniChar, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : True
 -- Skip return : False
 
@@ -984,16 +1060,16 @@
 
 
 -- function pango_lookup_aliases
--- Args : [Arg {argCName = "fontname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "families", argType = TCArray False (-1) 2 (TBasicType TUTF8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "fontname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "families", argType = TCArray False (-1) 2 (TBasicType TUTF8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_families", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_families", 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 "pango_lookup_aliases" pango_lookup_aliases :: 
     CString ->                              -- fontname : TBasicType TUTF8
     Ptr (Ptr CString) ->                    -- families : TCArray False (-1) 2 (TBasicType TUTF8)
-    Ptr Int32 ->                            -- n_families : TBasicType TInt32
+    Ptr Int32 ->                            -- n_families : TBasicType TInt
     IO ()
 
 {-# DEPRECATED lookupAliases ["(Since version 1.32)","This function is not thread-safe."]#-}
@@ -1018,15 +1094,15 @@
 
 
 -- function pango_log2vis_get_embedding_levels
--- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "pbase_dir", argType = TInterface "Pango" "Direction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "pbase_dir", argType = TInterface "Pango" "Direction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt8
+-- returnType : Just (TBasicType TUInt8)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_log2vis_get_embedding_levels" pango_log2vis_get_embedding_levels :: 
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     CUInt ->                                -- pbase_dir : TInterface "Pango" "Direction"
     IO Word8
 
@@ -1046,9 +1122,9 @@
 
 
 -- function pango_itemize_with_base_dir
--- Args : [Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "base_dir", argType = TInterface "Pango" "Direction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start_index", argType = TBasicType TInt32, 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 = "attrs", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cached_iter", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "base_dir", argType = TInterface "Pango" "Direction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start_index", argType = TBasicType TInt, 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 = "attrs", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cached_iter", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Pango" "Item")
+-- returnType : Just (TGList (TInterface "Pango" "Item"))
 -- throws : False
 -- Skip return : False
 
@@ -1056,8 +1132,8 @@
     Ptr Context ->                          -- context : TInterface "Pango" "Context"
     CUInt ->                                -- base_dir : TInterface "Pango" "Direction"
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- start_index : TBasicType TInt32
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- start_index : TBasicType TInt
+    Int32 ->                                -- length : TBasicType TInt
     Ptr AttrList ->                         -- attrs : TInterface "Pango" "AttrList"
     Ptr AttrIterator ->                     -- cached_iter : TInterface "Pango" "AttrIterator"
     IO (Ptr (GList (Ptr Item)))
@@ -1084,7 +1160,6 @@
             let jCachedIter' = unsafeManagedPtrGetPtr jCachedIter
             return jCachedIter'
     result <- pango_itemize_with_base_dir context' baseDir' text' startIndex length_ attrs' maybeCachedIter
-    checkUnexpectedReturnNULL "pango_itemize_with_base_dir" result
     result' <- unpackGList result
     result'' <- mapM (wrapBoxed Item) result'
     g_list_free result
@@ -1096,17 +1171,17 @@
 
 
 -- function pango_itemize
--- Args : [Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start_index", argType = TBasicType TInt32, 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 = "attrs", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cached_iter", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start_index", argType = TBasicType TInt, 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 = "attrs", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cached_iter", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TInterface "Pango" "Item")
+-- returnType : Just (TGList (TInterface "Pango" "Item"))
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_itemize" pango_itemize :: 
     Ptr Context ->                          -- context : TInterface "Pango" "Context"
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- start_index : TBasicType TInt32
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- start_index : TBasicType TInt
+    Int32 ->                                -- length : TBasicType TInt
     Ptr AttrList ->                         -- attrs : TInterface "Pango" "AttrList"
     Ptr AttrIterator ->                     -- cached_iter : TInterface "Pango" "AttrIterator"
     IO (Ptr (GList (Ptr Item)))
@@ -1131,7 +1206,6 @@
             let jCachedIter' = unsafeManagedPtrGetPtr jCachedIter
             return jCachedIter'
     result <- pango_itemize context' text' startIndex length_ attrs' maybeCachedIter
-    checkUnexpectedReturnNULL "pango_itemize" result
     result' <- unpackGList result
     result'' <- mapM (wrapBoxed Item) result'
     g_list_free result
@@ -1145,7 +1219,7 @@
 -- function pango_is_zero_width
 -- Args : [Arg {argCName = "ch", argType = TBasicType TUniChar, 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
 
@@ -1168,7 +1242,7 @@
 -- function pango_get_sysconf_subdirectory
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -1189,7 +1263,7 @@
 -- function pango_get_mirror_char
 -- Args : [Arg {argCName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mirrored_ch", argType = TBasicType TUniChar, 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
 
@@ -1213,19 +1287,19 @@
 
 
 -- function pango_get_log_attrs
--- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "level", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "log_attrs", argType = TCArray False (-1) 5 (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
--- Lengths : [Arg {argCName = "attrs_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "level", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "log_attrs", argType = TCArray False (-1) 5 (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs_len", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : [Arg {argCName = "attrs_len", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_get_log_attrs" pango_get_log_attrs :: 
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
-    Int32 ->                                -- level : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
+    Int32 ->                                -- level : TBasicType TInt
     Ptr Language ->                         -- language : TInterface "Pango" "Language"
     Ptr LogAttr ->                          -- log_attrs : TCArray False (-1) 5 (TInterface "Pango" "LogAttr")
-    Int32 ->                                -- attrs_len : TBasicType TInt32
+    Int32 ->                                -- attrs_len : TBasicType TInt
     IO ()
 
 
@@ -1254,7 +1328,7 @@
 -- function pango_get_lib_subdirectory
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -1273,17 +1347,17 @@
 
 
 -- function pango_find_paragraph_boundary
--- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "paragraph_delimiter_index", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "next_paragraph_start", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "paragraph_delimiter_index", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "next_paragraph_start", 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 "pango_find_paragraph_boundary" pango_find_paragraph_boundary :: 
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
-    Ptr Int32 ->                            -- paragraph_delimiter_index : TBasicType TInt32
-    Ptr Int32 ->                            -- next_paragraph_start : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
+    Ptr Int32 ->                            -- paragraph_delimiter_index : TBasicType TInt
+    Ptr Int32 ->                            -- next_paragraph_start : TBasicType TInt
     IO ()
 
 
@@ -1306,15 +1380,15 @@
 
 
 -- function pango_find_base_dir
--- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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}]
+-- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Direction"
+-- returnType : Just (TInterface "Pango" "Direction")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_find_base_dir" pango_find_base_dir :: 
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     IO CUInt
 
 
@@ -1334,7 +1408,7 @@
 -- function pango_extents_to_pixels
 -- Args : [Arg {argCName = "inclusive", argType = TInterface "Pango" "Rectangle", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "nearest", argType = TInterface "Pango" "Rectangle", 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
 
@@ -1367,18 +1441,18 @@
 
 
 -- function pango_default_break
--- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs", argType = TInterface "Pango" "LogAttr", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs", argType = TInterface "Pango" "LogAttr", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs_len", 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 "pango_default_break" pango_default_break :: 
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
     Ptr LogAttr ->                          -- attrs : TInterface "Pango" "LogAttr"
-    Int32 ->                                -- attrs_len : TBasicType TInt32
+    Int32 ->                                -- attrs_len : TBasicType TInt
     IO ()
 
 
@@ -1408,7 +1482,7 @@
 -- function pango_config_key_get_system
 -- Args : [Arg {argCName = "key", 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
 
@@ -1434,7 +1508,7 @@
 -- function pango_config_key_get
 -- Args : [Arg {argCName = "key", 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
 
@@ -1458,18 +1532,18 @@
 
 
 -- function pango_break
--- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs", argType = TCArray False (-1) 4 (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
--- Lengths : [Arg {argCName = "attrs_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs", argType = TCArray False (-1) 4 (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs_len", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : [Arg {argCName = "attrs_len", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_break" pango_break :: 
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
     Ptr LogAttr ->                          -- attrs : TCArray False (-1) 4 (TInterface "Pango" "LogAttr")
-    Int32 ->                                -- attrs_len : TBasicType TInt32
+    Int32 ->                                -- attrs_len : TBasicType TInt
     IO ()
 
 
@@ -1492,6 +1566,471 @@
     freeMem text'
     freeMem attrs''
     return ()
+
+
+-- function pango_attr_weight_new
+-- Args : [Arg {argCName = "weight", argType = TInterface "Pango" "Weight", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_weight_new" pango_attr_weight_new :: 
+    CUInt ->                                -- weight : TInterface "Pango" "Weight"
+    IO (Ptr Attribute)
+
+
+attrWeightNew ::
+    (MonadIO m) =>
+    Weight                                  -- weight
+    -> m Attribute                          -- result
+attrWeightNew weight = liftIO $ do
+    let weight' = (fromIntegral . fromEnum) weight
+    result <- pango_attr_weight_new weight'
+    checkUnexpectedReturnNULL "pango_attr_weight_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_variant_new
+-- Args : [Arg {argCName = "variant", argType = TInterface "Pango" "Variant", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_variant_new" pango_attr_variant_new :: 
+    CUInt ->                                -- variant : TInterface "Pango" "Variant"
+    IO (Ptr Attribute)
+
+
+attrVariantNew ::
+    (MonadIO m) =>
+    Variant                                 -- variant
+    -> m Attribute                          -- result
+attrVariantNew variant = liftIO $ do
+    let variant' = (fromIntegral . fromEnum) variant
+    result <- pango_attr_variant_new variant'
+    checkUnexpectedReturnNULL "pango_attr_variant_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_underline_new
+-- Args : [Arg {argCName = "underline", argType = TInterface "Pango" "Underline", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_underline_new" pango_attr_underline_new :: 
+    CUInt ->                                -- underline : TInterface "Pango" "Underline"
+    IO (Ptr Attribute)
+
+
+attrUnderlineNew ::
+    (MonadIO m) =>
+    Underline                               -- underline
+    -> m Attribute                          -- result
+attrUnderlineNew underline = liftIO $ do
+    let underline' = (fromIntegral . fromEnum) underline
+    result <- pango_attr_underline_new underline'
+    checkUnexpectedReturnNULL "pango_attr_underline_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_underline_color_new
+-- Args : [Arg {argCName = "red", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "green", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "blue", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_underline_color_new" pango_attr_underline_color_new :: 
+    Word16 ->                               -- red : TBasicType TUInt16
+    Word16 ->                               -- green : TBasicType TUInt16
+    Word16 ->                               -- blue : TBasicType TUInt16
+    IO (Ptr Attribute)
+
+
+attrUnderlineColorNew ::
+    (MonadIO m) =>
+    Word16                                  -- red
+    -> Word16                               -- green
+    -> Word16                               -- blue
+    -> m Attribute                          -- result
+attrUnderlineColorNew red green blue = liftIO $ do
+    result <- pango_attr_underline_color_new red green blue
+    checkUnexpectedReturnNULL "pango_attr_underline_color_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_style_new
+-- Args : [Arg {argCName = "style", argType = TInterface "Pango" "Style", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_style_new" pango_attr_style_new :: 
+    CUInt ->                                -- style : TInterface "Pango" "Style"
+    IO (Ptr Attribute)
+
+
+attrStyleNew ::
+    (MonadIO m) =>
+    Style                                   -- style
+    -> m Attribute                          -- result
+attrStyleNew style = liftIO $ do
+    let style' = (fromIntegral . fromEnum) style
+    result <- pango_attr_style_new style'
+    checkUnexpectedReturnNULL "pango_attr_style_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_strikethrough_new
+-- Args : [Arg {argCName = "strikethrough", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_strikethrough_new" pango_attr_strikethrough_new :: 
+    CInt ->                                 -- strikethrough : TBasicType TBoolean
+    IO (Ptr Attribute)
+
+
+attrStrikethroughNew ::
+    (MonadIO m) =>
+    Bool                                    -- strikethrough
+    -> m Attribute                          -- result
+attrStrikethroughNew strikethrough = liftIO $ do
+    let strikethrough' = (fromIntegral . fromEnum) strikethrough
+    result <- pango_attr_strikethrough_new strikethrough'
+    checkUnexpectedReturnNULL "pango_attr_strikethrough_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_strikethrough_color_new
+-- Args : [Arg {argCName = "red", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "green", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "blue", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_strikethrough_color_new" pango_attr_strikethrough_color_new :: 
+    Word16 ->                               -- red : TBasicType TUInt16
+    Word16 ->                               -- green : TBasicType TUInt16
+    Word16 ->                               -- blue : TBasicType TUInt16
+    IO (Ptr Attribute)
+
+
+attrStrikethroughColorNew ::
+    (MonadIO m) =>
+    Word16                                  -- red
+    -> Word16                               -- green
+    -> Word16                               -- blue
+    -> m Attribute                          -- result
+attrStrikethroughColorNew red green blue = liftIO $ do
+    result <- pango_attr_strikethrough_color_new red green blue
+    checkUnexpectedReturnNULL "pango_attr_strikethrough_color_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_stretch_new
+-- Args : [Arg {argCName = "stretch", argType = TInterface "Pango" "Stretch", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_stretch_new" pango_attr_stretch_new :: 
+    CUInt ->                                -- stretch : TInterface "Pango" "Stretch"
+    IO (Ptr Attribute)
+
+
+attrStretchNew ::
+    (MonadIO m) =>
+    Stretch                                 -- stretch
+    -> m Attribute                          -- result
+attrStretchNew stretch = liftIO $ do
+    let stretch' = (fromIntegral . fromEnum) stretch
+    result <- pango_attr_stretch_new stretch'
+    checkUnexpectedReturnNULL "pango_attr_stretch_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_scale_new
+-- Args : [Arg {argCName = "scale_factor", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_scale_new" pango_attr_scale_new :: 
+    CDouble ->                              -- scale_factor : TBasicType TDouble
+    IO (Ptr Attribute)
+
+
+attrScaleNew ::
+    (MonadIO m) =>
+    Double                                  -- scaleFactor
+    -> m Attribute                          -- result
+attrScaleNew scaleFactor = liftIO $ do
+    let scaleFactor' = realToFrac scaleFactor
+    result <- pango_attr_scale_new scaleFactor'
+    checkUnexpectedReturnNULL "pango_attr_scale_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_rise_new
+-- Args : [Arg {argCName = "rise", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_rise_new" pango_attr_rise_new :: 
+    Int32 ->                                -- rise : TBasicType TInt
+    IO (Ptr Attribute)
+
+
+attrRiseNew ::
+    (MonadIO m) =>
+    Int32                                   -- rise
+    -> m Attribute                          -- result
+attrRiseNew rise = liftIO $ do
+    result <- pango_attr_rise_new rise
+    checkUnexpectedReturnNULL "pango_attr_rise_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_letter_spacing_new
+-- Args : [Arg {argCName = "letter_spacing", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_letter_spacing_new" pango_attr_letter_spacing_new :: 
+    Int32 ->                                -- letter_spacing : TBasicType TInt
+    IO (Ptr Attribute)
+
+
+attrLetterSpacingNew ::
+    (MonadIO m) =>
+    Int32                                   -- letterSpacing
+    -> m Attribute                          -- result
+attrLetterSpacingNew letterSpacing = liftIO $ do
+    result <- pango_attr_letter_spacing_new letterSpacing
+    checkUnexpectedReturnNULL "pango_attr_letter_spacing_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_gravity_new
+-- Args : [Arg {argCName = "gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_gravity_new" pango_attr_gravity_new :: 
+    CUInt ->                                -- gravity : TInterface "Pango" "Gravity"
+    IO (Ptr Attribute)
+
+
+attrGravityNew ::
+    (MonadIO m) =>
+    Gravity                                 -- gravity
+    -> m Attribute                          -- result
+attrGravityNew gravity = liftIO $ do
+    let gravity' = (fromIntegral . fromEnum) gravity
+    result <- pango_attr_gravity_new gravity'
+    checkUnexpectedReturnNULL "pango_attr_gravity_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_gravity_hint_new
+-- Args : [Arg {argCName = "hint", argType = TInterface "Pango" "GravityHint", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_gravity_hint_new" pango_attr_gravity_hint_new :: 
+    CUInt ->                                -- hint : TInterface "Pango" "GravityHint"
+    IO (Ptr Attribute)
+
+
+attrGravityHintNew ::
+    (MonadIO m) =>
+    GravityHint                             -- hint
+    -> m Attribute                          -- result
+attrGravityHintNew hint = liftIO $ do
+    let hint' = (fromIntegral . fromEnum) hint
+    result <- pango_attr_gravity_hint_new hint'
+    checkUnexpectedReturnNULL "pango_attr_gravity_hint_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_foreground_new
+-- Args : [Arg {argCName = "red", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "green", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "blue", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_foreground_new" pango_attr_foreground_new :: 
+    Word16 ->                               -- red : TBasicType TUInt16
+    Word16 ->                               -- green : TBasicType TUInt16
+    Word16 ->                               -- blue : TBasicType TUInt16
+    IO (Ptr Attribute)
+
+
+attrForegroundNew ::
+    (MonadIO m) =>
+    Word16                                  -- red
+    -> Word16                               -- green
+    -> Word16                               -- blue
+    -> m Attribute                          -- result
+attrForegroundNew red green blue = liftIO $ do
+    result <- pango_attr_foreground_new red green blue
+    checkUnexpectedReturnNULL "pango_attr_foreground_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_foreground_alpha_new
+-- Args : [Arg {argCName = "alpha", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_foreground_alpha_new" pango_attr_foreground_alpha_new :: 
+    Word16 ->                               -- alpha : TBasicType TUInt16
+    IO (Ptr Attribute)
+
+
+attrForegroundAlphaNew ::
+    (MonadIO m) =>
+    Word16                                  -- alpha
+    -> m Attribute                          -- result
+attrForegroundAlphaNew alpha = liftIO $ do
+    result <- pango_attr_foreground_alpha_new alpha
+    checkUnexpectedReturnNULL "pango_attr_foreground_alpha_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_family_new
+-- Args : [Arg {argCName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_family_new" pango_attr_family_new :: 
+    CString ->                              -- family : TBasicType TUTF8
+    IO (Ptr Attribute)
+
+
+attrFamilyNew ::
+    (MonadIO m) =>
+    T.Text                                  -- family
+    -> m Attribute                          -- result
+attrFamilyNew family = liftIO $ do
+    family' <- textToCString family
+    result <- pango_attr_family_new family'
+    checkUnexpectedReturnNULL "pango_attr_family_new" result
+    result' <- (wrapPtr Attribute) result
+    freeMem family'
+    return result'
+
+
+-- function pango_attr_fallback_new
+-- Args : [Arg {argCName = "enable_fallback", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_fallback_new" pango_attr_fallback_new :: 
+    CInt ->                                 -- enable_fallback : TBasicType TBoolean
+    IO (Ptr Attribute)
+
+
+attrFallbackNew ::
+    (MonadIO m) =>
+    Bool                                    -- enableFallback
+    -> m Attribute                          -- result
+attrFallbackNew enableFallback = liftIO $ do
+    let enableFallback' = (fromIntegral . fromEnum) enableFallback
+    result <- pango_attr_fallback_new enableFallback'
+    checkUnexpectedReturnNULL "pango_attr_fallback_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_background_new
+-- Args : [Arg {argCName = "red", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "green", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "blue", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_background_new" pango_attr_background_new :: 
+    Word16 ->                               -- red : TBasicType TUInt16
+    Word16 ->                               -- green : TBasicType TUInt16
+    Word16 ->                               -- blue : TBasicType TUInt16
+    IO (Ptr Attribute)
+
+
+attrBackgroundNew ::
+    (MonadIO m) =>
+    Word16                                  -- red
+    -> Word16                               -- green
+    -> Word16                               -- blue
+    -> m Attribute                          -- result
+attrBackgroundNew red green blue = liftIO $ do
+    result <- pango_attr_background_new red green blue
+    checkUnexpectedReturnNULL "pango_attr_background_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
+
+
+-- function pango_attr_background_alpha_new
+-- Args : [Arg {argCName = "alpha", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_background_alpha_new" pango_attr_background_alpha_new :: 
+    Word16 ->                               -- alpha : TBasicType TUInt16
+    IO (Ptr Attribute)
+
+
+attrBackgroundAlphaNew ::
+    (MonadIO m) =>
+    Word16                                  -- alpha
+    -> m Attribute                          -- result
+attrBackgroundAlphaNew alpha = liftIO $ do
+    result <- pango_attr_background_alpha_new alpha
+    checkUnexpectedReturnNULL "pango_attr_background_alpha_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
 
 
 
diff --git a/GI/Pango/Objects.hs b/GI/Pango/Objects.hs
--- a/GI/Pango/Objects.hs
+++ b/GI/Pango/Objects.hs
@@ -36,9 +36,9 @@
 import GI.Pango.Objects.Layout
 import GI.Pango.Objects.Renderer
 
-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/Pango/Objects/Context.hs b/GI/Pango/Objects/Context.hs
--- a/GI/Pango/Objects/Context.hs
+++ b/GI/Pango/Objects/Context.hs
@@ -130,9 +130,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
@@ -226,7 +226,7 @@
 -- method type : Constructor
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Pango" "Context"
+-- returnType : Just (TInterface "Pango" "Context")
 -- throws : False
 -- Skip return : False
 
@@ -247,7 +247,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "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
 
@@ -274,7 +274,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", 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
 
@@ -302,7 +302,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Gravity"
+-- returnType : Just (TInterface "Pango" "Gravity")
 -- throws : False
 -- Skip return : False
 
@@ -330,7 +330,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontDescription"
+-- returnType : Just (TInterface "Pango" "FontDescription")
 -- throws : False
 -- Skip return : False
 
@@ -359,7 +359,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontMap"
+-- returnType : Just (TInterface "Pango" "FontMap")
 -- throws : False
 -- Skip return : False
 
@@ -388,7 +388,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Gravity"
+-- returnType : Just (TInterface "Pango" "Gravity")
 -- throws : False
 -- Skip return : False
 
@@ -416,7 +416,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "GravityHint"
+-- returnType : Just (TInterface "Pango" "GravityHint")
 -- throws : False
 -- Skip return : False
 
@@ -444,7 +444,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Language"
+-- returnType : Just (TInterface "Pango" "Language")
 -- throws : False
 -- Skip return : False
 
@@ -473,7 +473,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Matrix"
+-- returnType : Just (TInterface "Pango" "Matrix")
 -- throws : False
 -- Skip return : False
 
@@ -485,24 +485,25 @@
 contextGetMatrix ::
     (MonadIO m, ContextK a) =>
     a                                       -- _obj
-    -> m Matrix                             -- result
+    -> m (Maybe Matrix)                     -- result
 contextGetMatrix _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_context_get_matrix _obj'
-    checkUnexpectedReturnNULL "pango_context_get_matrix" result
-    result' <- (newBoxed Matrix) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed Matrix) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data ContextGetMatrixMethodInfo
-instance (signature ~ (m Matrix), MonadIO m, ContextK a) => MethodInfo ContextGetMatrixMethodInfo a signature where
+instance (signature ~ (m (Maybe Matrix)), MonadIO m, ContextK a) => MethodInfo ContextGetMatrixMethodInfo a signature where
     overloadedMethod _ = contextGetMatrix
 
 -- method Context::get_metrics
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontMetrics"
+-- returnType : Just (TInterface "Pango" "FontMetrics")
 -- throws : False
 -- Skip return : False
 
@@ -547,7 +548,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", 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
 
@@ -572,16 +573,16 @@
 
 -- method Context::list_families
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "families", argType = TCArray False (-1) 2 (TInterface "Pango" "FontFamily"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferContainer},Arg {argCName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "families", argType = TCArray False (-1) 2 (TInterface "Pango" "FontFamily"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferContainer},Arg {argCName = "n_families", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_families", 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 "pango_context_list_families" pango_context_list_families :: 
     Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
     Ptr (Ptr (Ptr FontFamily)) ->           -- families : TCArray False (-1) 2 (TInterface "Pango" "FontFamily")
-    Ptr Int32 ->                            -- n_families : TBasicType TInt32
+    Ptr Int32 ->                            -- n_families : TBasicType TInt
     IO ()
 
 
@@ -612,7 +613,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Font"
+-- returnType : Just (TInterface "Pango" "Font")
 -- throws : False
 -- Skip return : False
 
@@ -626,26 +627,27 @@
     (MonadIO m, ContextK a) =>
     a                                       -- _obj
     -> FontDescription                      -- desc
-    -> m Font                               -- result
+    -> m (Maybe Font)                       -- result
 contextLoadFont _obj desc = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let desc' = unsafeManagedPtrGetPtr desc
     result <- pango_context_load_font _obj' desc'
-    checkUnexpectedReturnNULL "pango_context_load_font" result
-    result' <- (wrapObject Font) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapObject Font) result'
+        return result''
     touchManagedPtr _obj
     touchManagedPtr desc
-    return result'
+    return maybeResult
 
 data ContextLoadFontMethodInfo
-instance (signature ~ (FontDescription -> m Font), MonadIO m, ContextK a) => MethodInfo ContextLoadFontMethodInfo a signature where
+instance (signature ~ (FontDescription -> m (Maybe Font)), MonadIO m, ContextK a) => MethodInfo ContextLoadFontMethodInfo a signature where
     overloadedMethod _ = contextLoadFont
 
 -- method Context::load_fontset
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Fontset"
+-- returnType : Just (TInterface "Pango" "Fontset")
 -- throws : False
 -- Skip return : False
 
@@ -661,28 +663,29 @@
     a                                       -- _obj
     -> FontDescription                      -- desc
     -> Language                             -- language
-    -> m Fontset                            -- result
+    -> m (Maybe Fontset)                    -- result
 contextLoadFontset _obj desc language = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let desc' = unsafeManagedPtrGetPtr desc
     let language' = unsafeManagedPtrGetPtr language
     result <- pango_context_load_fontset _obj' desc' language'
-    checkUnexpectedReturnNULL "pango_context_load_fontset" result
-    result' <- (wrapObject Fontset) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapObject Fontset) result'
+        return result''
     touchManagedPtr _obj
     touchManagedPtr desc
     touchManagedPtr language
-    return result'
+    return maybeResult
 
 data ContextLoadFontsetMethodInfo
-instance (signature ~ (FontDescription -> Language -> m Fontset), MonadIO m, ContextK a) => MethodInfo ContextLoadFontsetMethodInfo a signature where
+instance (signature ~ (FontDescription -> Language -> m (Maybe Fontset)), MonadIO m, ContextK a) => MethodInfo ContextLoadFontsetMethodInfo a signature where
     overloadedMethod _ = contextLoadFontset
 
 -- method Context::set_base_dir
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "direction", argType = TInterface "Pango" "Direction", 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
 
@@ -712,7 +715,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "gravity", argType = TInterface "Pango" "Gravity", 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
 
@@ -742,7 +745,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc", argType = TInterface "Pango" "FontDescription", 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
 
@@ -773,7 +776,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "font_map", argType = TInterface "Pango" "FontMap", 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
 
@@ -804,7 +807,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "hint", argType = TInterface "Pango" "GravityHint", 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
 
@@ -834,7 +837,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "language", argType = TInterface "Pango" "Language", 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
 
@@ -865,7 +868,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "matrix", argType = TInterface "Pango" "Matrix", 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
 
diff --git a/GI/Pango/Objects/Context.hs-boot b/GI/Pango/Objects/Context.hs-boot
--- a/GI/Pango/Objects/Context.hs-boot
+++ b/GI/Pango/Objects/Context.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.Context 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/Pango/Objects/Engine.hs b/GI/Pango/Objects/Engine.hs
--- a/GI/Pango/Objects/Engine.hs
+++ b/GI/Pango/Objects/Engine.hs
@@ -18,9 +18,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/Pango/Objects/Engine.hs-boot b/GI/Pango/Objects/Engine.hs-boot
--- a/GI/Pango/Objects/Engine.hs-boot
+++ b/GI/Pango/Objects/Engine.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.Engine 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/Pango/Objects/EngineLang.hs b/GI/Pango/Objects/EngineLang.hs
--- a/GI/Pango/Objects/EngineLang.hs
+++ b/GI/Pango/Objects/EngineLang.hs
@@ -18,9 +18,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/Pango/Objects/EngineLang.hs-boot b/GI/Pango/Objects/EngineLang.hs-boot
--- a/GI/Pango/Objects/EngineLang.hs-boot
+++ b/GI/Pango/Objects/EngineLang.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.EngineLang 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/Pango/Objects/EngineShape.hs b/GI/Pango/Objects/EngineShape.hs
--- a/GI/Pango/Objects/EngineShape.hs
+++ b/GI/Pango/Objects/EngineShape.hs
@@ -18,9 +18,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/Pango/Objects/EngineShape.hs-boot b/GI/Pango/Objects/EngineShape.hs-boot
--- a/GI/Pango/Objects/EngineShape.hs-boot
+++ b/GI/Pango/Objects/EngineShape.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.EngineShape 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/Pango/Objects/Font.hs b/GI/Pango/Objects/Font.hs
--- a/GI/Pango/Objects/Font.hs
+++ b/GI/Pango/Objects/Font.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
@@ -130,7 +130,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontDescription"
+-- returnType : Just (TInterface "Pango" "FontDescription")
 -- throws : False
 -- Skip return : False
 
@@ -159,7 +159,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontDescription"
+-- returnType : Just (TInterface "Pango" "FontDescription")
 -- throws : False
 -- Skip return : False
 
@@ -188,7 +188,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontMap"
+-- returnType : Just (TInterface "Pango" "FontMap")
 -- throws : False
 -- Skip return : False
 
@@ -200,24 +200,25 @@
 fontGetFontMap ::
     (MonadIO m, FontK a) =>
     a                                       -- _obj
-    -> m FontMap                            -- result
+    -> m (Maybe FontMap)                    -- result
 fontGetFontMap _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_font_get_font_map _obj'
-    checkUnexpectedReturnNULL "pango_font_get_font_map" result
-    result' <- (newObject FontMap) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject FontMap) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data FontGetFontMapMethodInfo
-instance (signature ~ (m FontMap), MonadIO m, FontK a) => MethodInfo FontGetFontMapMethodInfo a signature where
+instance (signature ~ (m (Maybe FontMap)), MonadIO m, FontK a) => MethodInfo FontGetFontMapMethodInfo a signature where
     overloadedMethod _ = fontGetFontMap
 
 -- method Font::get_glyph_extents
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyph", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -252,7 +253,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontMetrics"
+-- returnType : Just (TInterface "Pango" "FontMetrics")
 -- throws : False
 -- Skip return : False
 
@@ -287,15 +288,15 @@
 
 -- method Font::descriptions_free
 -- method type : MemberFunction
--- Args : [Arg {argCName = "descs", argType = TCArray False (-1) 1 (TInterface "Pango" "FontDescription"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_descs", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
--- Lengths : [Arg {argCName = "n_descs", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "descs", argType = TCArray False (-1) 1 (TInterface "Pango" "FontDescription"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_descs", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : [Arg {argCName = "n_descs", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_font_descriptions_free" pango_font_descriptions_free :: 
     Ptr (Ptr FontDescription) ->            -- descs : TCArray False (-1) 1 (TInterface "Pango" "FontDescription")
-    Int32 ->                                -- n_descs : TBasicType TInt32
+    Int32 ->                                -- n_descs : TBasicType TInt
     IO ()
 
 
diff --git a/GI/Pango/Objects/Font.hs-boot b/GI/Pango/Objects/Font.hs-boot
--- a/GI/Pango/Objects/Font.hs-boot
+++ b/GI/Pango/Objects/Font.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.Font 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/Pango/Objects/FontFace.hs b/GI/Pango/Objects/FontFace.hs
--- a/GI/Pango/Objects/FontFace.hs
+++ b/GI/Pango/Objects/FontFace.hs
@@ -41,9 +41,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
@@ -120,7 +120,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontFace", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontDescription"
+-- returnType : Just (TInterface "Pango" "FontDescription")
 -- throws : False
 -- Skip return : False
 
@@ -149,7 +149,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontFace", 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
 
@@ -178,7 +178,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontFace", 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
 
@@ -204,16 +204,16 @@
 
 -- method FontFace::list_sizes
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontFace", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "sizes", argType = TCArray False (-1) 2 (TBasicType TInt32), direction = DirectionOut, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_sizes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_sizes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontFace", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "sizes", argType = TCArray False (-1) 2 (TBasicType TInt), direction = DirectionOut, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_sizes", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_sizes", 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 "pango_font_face_list_sizes" pango_font_face_list_sizes :: 
     Ptr FontFace ->                         -- _obj : TInterface "Pango" "FontFace"
-    Ptr (Ptr Int32) ->                      -- sizes : TCArray False (-1) 2 (TBasicType TInt32)
-    Ptr Int32 ->                            -- n_sizes : TBasicType TInt32
+    Ptr (Ptr Int32) ->                      -- sizes : TCArray False (-1) 2 (TBasicType TInt)
+    Ptr Int32 ->                            -- n_sizes : TBasicType TInt
     IO ()
 
 
diff --git a/GI/Pango/Objects/FontFace.hs-boot b/GI/Pango/Objects/FontFace.hs-boot
--- a/GI/Pango/Objects/FontFace.hs-boot
+++ b/GI/Pango/Objects/FontFace.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.FontFace 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/Pango/Objects/FontFamily.hs b/GI/Pango/Objects/FontFamily.hs
--- a/GI/Pango/Objects/FontFamily.hs
+++ b/GI/Pango/Objects/FontFamily.hs
@@ -36,9 +36,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
@@ -114,7 +114,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontFamily", 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
 
@@ -143,7 +143,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontFamily", 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
 
@@ -169,16 +169,16 @@
 
 -- method FontFamily::list_faces
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontFamily", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "faces", argType = TCArray False (-1) 2 (TInterface "Pango" "FontFace"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferContainer},Arg {argCName = "n_faces", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_faces", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontFamily", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "faces", argType = TCArray False (-1) 2 (TInterface "Pango" "FontFace"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferContainer},Arg {argCName = "n_faces", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_faces", 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 "pango_font_family_list_faces" pango_font_family_list_faces :: 
     Ptr FontFamily ->                       -- _obj : TInterface "Pango" "FontFamily"
     Ptr (Ptr (Ptr FontFace)) ->             -- faces : TCArray False (-1) 2 (TInterface "Pango" "FontFace")
-    Ptr Int32 ->                            -- n_faces : TBasicType TInt32
+    Ptr Int32 ->                            -- n_faces : TBasicType TInt
     IO ()
 
 
diff --git a/GI/Pango/Objects/FontFamily.hs-boot b/GI/Pango/Objects/FontFamily.hs-boot
--- a/GI/Pango/Objects/FontFamily.hs-boot
+++ b/GI/Pango/Objects/FontFamily.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.FontFamily 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/Pango/Objects/FontMap.hs b/GI/Pango/Objects/FontMap.hs
--- a/GI/Pango/Objects/FontMap.hs
+++ b/GI/Pango/Objects/FontMap.hs
@@ -56,9 +56,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
@@ -138,7 +138,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMap", 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
 
@@ -165,7 +165,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMap", 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
 
@@ -194,7 +194,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMap", 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
 
@@ -221,7 +221,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMap", 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
 
@@ -248,16 +248,16 @@
 
 -- method FontMap::list_families
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "families", argType = TCArray False (-1) 2 (TInterface "Pango" "FontFamily"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferContainer},Arg {argCName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "families", argType = TCArray False (-1) 2 (TInterface "Pango" "FontFamily"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferContainer},Arg {argCName = "n_families", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_families", 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 "pango_font_map_list_families" pango_font_map_list_families :: 
     Ptr FontMap ->                          -- _obj : TInterface "Pango" "FontMap"
     Ptr (Ptr (Ptr FontFamily)) ->           -- families : TCArray False (-1) 2 (TInterface "Pango" "FontFamily")
-    Ptr Int32 ->                            -- n_families : TBasicType TInt32
+    Ptr Int32 ->                            -- n_families : TBasicType TInt
     IO ()
 
 
@@ -288,7 +288,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Font"
+-- returnType : Just (TInterface "Pango" "Font")
 -- throws : False
 -- Skip return : False
 
@@ -304,28 +304,29 @@
     a                                       -- _obj
     -> b                                    -- context
     -> FontDescription                      -- desc
-    -> m Font                               -- result
+    -> m (Maybe Font)                       -- result
 fontMapLoadFont _obj context desc = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let context' = unsafeManagedPtrCastPtr context
     let desc' = unsafeManagedPtrGetPtr desc
     result <- pango_font_map_load_font _obj' context' desc'
-    checkUnexpectedReturnNULL "pango_font_map_load_font" result
-    result' <- (wrapObject Font) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapObject Font) result'
+        return result''
     touchManagedPtr _obj
     touchManagedPtr context
     touchManagedPtr desc
-    return result'
+    return maybeResult
 
 data FontMapLoadFontMethodInfo
-instance (signature ~ (b -> FontDescription -> m Font), MonadIO m, FontMapK a, ContextK b) => MethodInfo FontMapLoadFontMethodInfo a signature where
+instance (signature ~ (b -> FontDescription -> m (Maybe Font)), MonadIO m, FontMapK a, ContextK b) => MethodInfo FontMapLoadFontMethodInfo a signature where
     overloadedMethod _ = fontMapLoadFont
 
 -- method FontMap::load_fontset
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Fontset"
+-- returnType : Just (TInterface "Pango" "Fontset")
 -- throws : False
 -- Skip return : False
 
@@ -343,23 +344,24 @@
     -> b                                    -- context
     -> FontDescription                      -- desc
     -> Language                             -- language
-    -> m Fontset                            -- result
+    -> m (Maybe Fontset)                    -- result
 fontMapLoadFontset _obj context desc language = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let context' = unsafeManagedPtrCastPtr context
     let desc' = unsafeManagedPtrGetPtr desc
     let language' = unsafeManagedPtrGetPtr language
     result <- pango_font_map_load_fontset _obj' context' desc' language'
-    checkUnexpectedReturnNULL "pango_font_map_load_fontset" result
-    result' <- (wrapObject Fontset) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapObject Fontset) result'
+        return result''
     touchManagedPtr _obj
     touchManagedPtr context
     touchManagedPtr desc
     touchManagedPtr language
-    return result'
+    return maybeResult
 
 data FontMapLoadFontsetMethodInfo
-instance (signature ~ (b -> FontDescription -> Language -> m Fontset), MonadIO m, FontMapK a, ContextK b) => MethodInfo FontMapLoadFontsetMethodInfo a signature where
+instance (signature ~ (b -> FontDescription -> Language -> m (Maybe Fontset)), MonadIO m, FontMapK a, ContextK b) => MethodInfo FontMapLoadFontsetMethodInfo a signature where
     overloadedMethod _ = fontMapLoadFontset
 
 
diff --git a/GI/Pango/Objects/FontMap.hs-boot b/GI/Pango/Objects/FontMap.hs-boot
--- a/GI/Pango/Objects/FontMap.hs-boot
+++ b/GI/Pango/Objects/FontMap.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.FontMap 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/Pango/Objects/Fontset.hs b/GI/Pango/Objects/Fontset.hs
--- a/GI/Pango/Objects/Fontset.hs
+++ b/GI/Pango/Objects/Fontset.hs
@@ -36,9 +36,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
@@ -112,16 +112,16 @@
 
 -- method Fontset::foreach
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface "Pango" "FontsetForeachFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface "Pango" "FontsetForeachFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "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
 
 foreign import ccall "pango_fontset_foreach" pango_fontset_foreach :: 
     Ptr Fontset ->                          -- _obj : TInterface "Pango" "Fontset"
     FunPtr FontsetForeachFuncC ->           -- func : TInterface "Pango" "FontsetForeachFunc"
-    Ptr () ->                               -- data : TBasicType TVoid
+    Ptr () ->                               -- data : TBasicType TPtr
     IO ()
 
 
@@ -145,15 +145,15 @@
 
 -- method Fontset::get_font
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "wc", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "wc", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Font"
+-- returnType : Just (TInterface "Pango" "Font")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_fontset_get_font" pango_fontset_get_font :: 
     Ptr Fontset ->                          -- _obj : TInterface "Pango" "Fontset"
-    Word32 ->                               -- wc : TBasicType TUInt32
+    Word32 ->                               -- wc : TBasicType TUInt
     IO (Ptr Font)
 
 
@@ -178,7 +178,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontMetrics"
+-- returnType : Just (TInterface "Pango" "FontMetrics")
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Pango/Objects/Fontset.hs-boot b/GI/Pango/Objects/Fontset.hs-boot
--- a/GI/Pango/Objects/Fontset.hs-boot
+++ b/GI/Pango/Objects/Fontset.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.Fontset 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/Pango/Objects/FontsetSimple.hs b/GI/Pango/Objects/FontsetSimple.hs
--- a/GI/Pango/Objects/FontsetSimple.hs
+++ b/GI/Pango/Objects/FontsetSimple.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
@@ -115,7 +115,7 @@
 -- method type : Constructor
 -- Args : [Arg {argCName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontsetSimple"
+-- returnType : Just (TInterface "Pango" "FontsetSimple")
 -- throws : False
 -- Skip return : False
 
@@ -140,7 +140,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontsetSimple", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "font", argType = TInterface "Pango" "Font", 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
 
@@ -171,7 +171,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontsetSimple", 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
 
diff --git a/GI/Pango/Objects/FontsetSimple.hs-boot b/GI/Pango/Objects/FontsetSimple.hs-boot
--- a/GI/Pango/Objects/FontsetSimple.hs-boot
+++ b/GI/Pango/Objects/FontsetSimple.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.FontsetSimple 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/Pango/Objects/Layout.hs b/GI/Pango/Objects/Layout.hs
--- a/GI/Pango/Objects/Layout.hs
+++ b/GI/Pango/Objects/Layout.hs
@@ -305,9 +305,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
@@ -436,7 +436,7 @@
 -- method type : Constructor
 -- Args : [Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Layout"
+-- returnType : Just (TInterface "Pango" "Layout")
 -- throws : False
 -- Skip return : False
 
@@ -461,7 +461,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -488,7 +488,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Layout"
+-- returnType : Just (TInterface "Pango" "Layout")
 -- throws : False
 -- Skip return : False
 
@@ -517,7 +517,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Alignment"
+-- returnType : Just (TInterface "Pango" "Alignment")
 -- throws : False
 -- Skip return : False
 
@@ -545,7 +545,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "AttrList"
+-- returnType : Just (TInterface "Pango" "AttrList")
 -- throws : False
 -- Skip return : False
 
@@ -574,7 +574,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -602,7 +602,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -629,7 +629,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -656,7 +656,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -683,15 +683,15 @@
 
 -- method Layout::get_cursor_pos
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "strong_pos", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "weak_pos", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "strong_pos", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "weak_pos", argType = TInterface "Pango" "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 "pango_layout_get_cursor_pos" pango_layout_get_cursor_pos :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Int32 ->                                -- index_ : TBasicType TInt32
+    Int32 ->                                -- index_ : TBasicType TInt
     Ptr Rectangle ->                        -- strong_pos : TInterface "Pango" "Rectangle"
     Ptr Rectangle ->                        -- weak_pos : TInterface "Pango" "Rectangle"
     IO ()
@@ -700,13 +700,13 @@
 layoutGetCursorPos ::
     (MonadIO m, LayoutK a) =>
     a                                       -- _obj
-    -> Int32                                -- index
+    -> Int32                                -- index_
     -> m (Rectangle,Rectangle)              -- result
-layoutGetCursorPos _obj index = liftIO $ do
+layoutGetCursorPos _obj index_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     strongPos <- callocBytes 16 :: IO (Ptr Rectangle)
     weakPos <- callocBytes 16 :: IO (Ptr Rectangle)
-    pango_layout_get_cursor_pos _obj' index strongPos weakPos
+    pango_layout_get_cursor_pos _obj' index_ strongPos weakPos
     strongPos' <- (wrapPtr Rectangle) strongPos
     weakPos' <- (wrapPtr Rectangle) weakPos
     touchManagedPtr _obj
@@ -720,7 +720,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "EllipsizeMode"
+-- returnType : Just (TInterface "Pango" "EllipsizeMode")
 -- throws : False
 -- Skip return : False
 
@@ -748,7 +748,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -781,7 +781,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontDescription"
+-- returnType : Just (TInterface "Pango" "FontDescription")
 -- throws : False
 -- Skip return : False
 
@@ -793,24 +793,25 @@
 layoutGetFontDescription ::
     (MonadIO m, LayoutK a) =>
     a                                       -- _obj
-    -> m FontDescription                    -- result
+    -> m (Maybe FontDescription)            -- result
 layoutGetFontDescription _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_layout_get_font_description _obj'
-    checkUnexpectedReturnNULL "pango_layout_get_font_description" result
-    result' <- (newBoxed FontDescription) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed FontDescription) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data LayoutGetFontDescriptionMethodInfo
-instance (signature ~ (m FontDescription), MonadIO m, LayoutK a) => MethodInfo LayoutGetFontDescriptionMethodInfo a signature where
+instance (signature ~ (m (Maybe FontDescription)), MonadIO m, LayoutK a) => MethodInfo LayoutGetFontDescriptionMethodInfo a signature where
     overloadedMethod _ = layoutGetFontDescription
 
 -- method Layout::get_height
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -837,7 +838,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -864,7 +865,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "LayoutIter"
+-- returnType : Just (TInterface "Pango" "LayoutIter")
 -- throws : False
 -- Skip return : False
 
@@ -893,7 +894,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -919,15 +920,15 @@
 
 -- method Layout::get_line
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "LayoutLine"
+-- returnType : Just (TInterface "Pango" "LayoutLine")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_layout_get_line" pango_layout_get_line :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Int32 ->                                -- line : TBasicType TInt32
+    Int32 ->                                -- line : TBasicType TInt
     IO (Ptr LayoutLine)
 
 
@@ -935,24 +936,25 @@
     (MonadIO m, LayoutK a) =>
     a                                       -- _obj
     -> Int32                                -- line
-    -> m LayoutLine                         -- result
+    -> m (Maybe LayoutLine)                 -- result
 layoutGetLine _obj line = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_layout_get_line _obj' line
-    checkUnexpectedReturnNULL "pango_layout_get_line" result
-    result' <- (newBoxed LayoutLine) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed LayoutLine) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data LayoutGetLineMethodInfo
-instance (signature ~ (Int32 -> m LayoutLine), MonadIO m, LayoutK a) => MethodInfo LayoutGetLineMethodInfo a signature where
+instance (signature ~ (Int32 -> m (Maybe LayoutLine)), MonadIO m, LayoutK a) => MethodInfo LayoutGetLineMethodInfo a signature where
     overloadedMethod _ = layoutGetLine
 
 -- method Layout::get_line_count
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -977,15 +979,15 @@
 
 -- method Layout::get_line_readonly
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "LayoutLine"
+-- returnType : Just (TInterface "Pango" "LayoutLine")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_layout_get_line_readonly" pango_layout_get_line_readonly :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Int32 ->                                -- line : TBasicType TInt32
+    Int32 ->                                -- line : TBasicType TInt
     IO (Ptr LayoutLine)
 
 
@@ -993,24 +995,25 @@
     (MonadIO m, LayoutK a) =>
     a                                       -- _obj
     -> Int32                                -- line
-    -> m LayoutLine                         -- result
+    -> m (Maybe LayoutLine)                 -- result
 layoutGetLineReadonly _obj line = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_layout_get_line_readonly _obj' line
-    checkUnexpectedReturnNULL "pango_layout_get_line_readonly" result
-    result' <- (newBoxed LayoutLine) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed LayoutLine) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data LayoutGetLineReadonlyMethodInfo
-instance (signature ~ (Int32 -> m LayoutLine), MonadIO m, LayoutK a) => MethodInfo LayoutGetLineReadonlyMethodInfo a signature where
+instance (signature ~ (Int32 -> m (Maybe LayoutLine)), MonadIO m, LayoutK a) => MethodInfo LayoutGetLineReadonlyMethodInfo a signature where
     overloadedMethod _ = layoutGetLineReadonly
 
 -- method Layout::get_lines
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGSList (TInterface "Pango" "LayoutLine")
+-- returnType : Just (TGSList (TInterface "Pango" "LayoutLine"))
 -- throws : False
 -- Skip return : False
 
@@ -1026,7 +1029,6 @@
 layoutGetLines _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_layout_get_lines _obj'
-    checkUnexpectedReturnNULL "pango_layout_get_lines" result
     result' <- unpackGSList result
     result'' <- mapM (newBoxed LayoutLine) result'
     touchManagedPtr _obj
@@ -1040,7 +1042,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGSList (TInterface "Pango" "LayoutLine")
+-- returnType : Just (TGSList (TInterface "Pango" "LayoutLine"))
 -- throws : False
 -- Skip return : False
 
@@ -1056,7 +1058,6 @@
 layoutGetLinesReadonly _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_layout_get_lines_readonly _obj'
-    checkUnexpectedReturnNULL "pango_layout_get_lines_readonly" result
     result' <- unpackGSList result
     result'' <- mapM (newBoxed LayoutLine) result'
     touchManagedPtr _obj
@@ -1068,16 +1069,16 @@
 
 -- method Layout::get_log_attrs
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs", argType = TCArray False (-1) 2 (TInterface "Pango" "LogAttr"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferContainer},Arg {argCName = "n_attrs", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_attrs", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs", argType = TCArray False (-1) 2 (TInterface "Pango" "LogAttr"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferContainer},Arg {argCName = "n_attrs", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_attrs", 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 "pango_layout_get_log_attrs" pango_layout_get_log_attrs :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
     Ptr (Ptr LogAttr) ->                    -- attrs : TCArray False (-1) 2 (TInterface "Pango" "LogAttr")
-    Ptr Int32 ->                            -- n_attrs : TBasicType TInt32
+    Ptr Int32 ->                            -- n_attrs : TBasicType TInt
     IO ()
 
 
@@ -1106,15 +1107,15 @@
 
 -- method Layout::get_log_attrs_readonly
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_attrs", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_attrs", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TCArray False (-1) 1 (TInterface "Pango" "LogAttr")
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_attrs", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_attrs", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- returnType : Just (TCArray False (-1) 1 (TInterface "Pango" "LogAttr"))
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_layout_get_log_attrs_readonly" pango_layout_get_log_attrs_readonly :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Ptr Int32 ->                            -- n_attrs : TBasicType TInt32
+    Ptr Int32 ->                            -- n_attrs : TBasicType TInt
     IO (Ptr LogAttr)
 
 
@@ -1142,7 +1143,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -1173,16 +1174,16 @@
 
 -- method Layout::get_pixel_size
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},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 "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},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 "pango_layout_get_pixel_size" pango_layout_get_pixel_size :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Ptr Int32 ->                            -- width : TBasicType TInt32
-    Ptr Int32 ->                            -- height : TBasicType TInt32
+    Ptr Int32 ->                            -- width : TBasicType TInt
+    Ptr Int32 ->                            -- height : TBasicType TInt
     IO ()
 
 
@@ -1210,7 +1211,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -1237,7 +1238,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -1263,16 +1264,16 @@
 
 -- method Layout::get_size
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TInt, 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 "pango_layout_get_size" pango_layout_get_size :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Ptr Int32 ->                            -- width : TBasicType TInt32
-    Ptr Int32 ->                            -- height : TBasicType TInt32
+    Ptr Int32 ->                            -- width : TBasicType TInt
+    Ptr Int32 ->                            -- height : TBasicType TInt
     IO ()
 
 
@@ -1300,7 +1301,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -1327,7 +1328,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "TabArray"
+-- returnType : Just (TInterface "Pango" "TabArray")
 -- throws : False
 -- Skip return : False
 
@@ -1339,24 +1340,25 @@
 layoutGetTabs ::
     (MonadIO m, LayoutK a) =>
     a                                       -- _obj
-    -> m TabArray                           -- result
+    -> m (Maybe TabArray)                   -- result
 layoutGetTabs _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_layout_get_tabs _obj'
-    checkUnexpectedReturnNULL "pango_layout_get_tabs" result
-    result' <- (wrapBoxed TabArray) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed TabArray) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data LayoutGetTabsMethodInfo
-instance (signature ~ (m TabArray), MonadIO m, LayoutK a) => MethodInfo LayoutGetTabsMethodInfo a signature where
+instance (signature ~ (m (Maybe TabArray)), MonadIO m, LayoutK a) => MethodInfo LayoutGetTabsMethodInfo a signature where
     overloadedMethod _ = layoutGetTabs
 
 -- method Layout::get_text
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -1385,7 +1387,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -1412,7 +1414,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -1439,7 +1441,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "WrapMode"
+-- returnType : Just (TInterface "Pango" "WrapMode")
 -- throws : False
 -- Skip return : False
 
@@ -1465,33 +1467,33 @@
 
 -- method Layout::index_to_line_x
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "trailing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "x_pos", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "trailing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "x_pos", 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 "pango_layout_index_to_line_x" pango_layout_index_to_line_x :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Int32 ->                                -- index_ : TBasicType TInt32
+    Int32 ->                                -- index_ : TBasicType TInt
     CInt ->                                 -- trailing : TBasicType TBoolean
-    Ptr Int32 ->                            -- line : TBasicType TInt32
-    Ptr Int32 ->                            -- x_pos : TBasicType TInt32
+    Ptr Int32 ->                            -- line : TBasicType TInt
+    Ptr Int32 ->                            -- x_pos : TBasicType TInt
     IO ()
 
 
 layoutIndexToLineX ::
     (MonadIO m, LayoutK a) =>
     a                                       -- _obj
-    -> Int32                                -- index
+    -> Int32                                -- index_
     -> Bool                                 -- trailing
     -> m (Int32,Int32)                      -- result
-layoutIndexToLineX _obj index trailing = liftIO $ do
+layoutIndexToLineX _obj index_ trailing = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let trailing' = (fromIntegral . fromEnum) trailing
     line <- allocMem :: IO (Ptr Int32)
     xPos <- allocMem :: IO (Ptr Int32)
-    pango_layout_index_to_line_x _obj' index trailing' line xPos
+    pango_layout_index_to_line_x _obj' index_ trailing' line xPos
     line' <- peek line
     xPos' <- peek xPos
     touchManagedPtr _obj
@@ -1505,15 +1507,15 @@
 
 -- method Layout::index_to_pos
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pos", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pos", argType = TInterface "Pango" "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 "pango_layout_index_to_pos" pango_layout_index_to_pos :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Int32 ->                                -- index_ : TBasicType TInt32
+    Int32 ->                                -- index_ : TBasicType TInt
     Ptr Rectangle ->                        -- pos : TInterface "Pango" "Rectangle"
     IO ()
 
@@ -1521,12 +1523,12 @@
 layoutIndexToPos ::
     (MonadIO m, LayoutK a) =>
     a                                       -- _obj
-    -> Int32                                -- index
+    -> Int32                                -- index_
     -> m (Rectangle)                        -- result
-layoutIndexToPos _obj index = liftIO $ do
+layoutIndexToPos _obj index_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     pos <- callocBytes 16 :: IO (Ptr Rectangle)
-    pango_layout_index_to_pos _obj' index pos
+    pango_layout_index_to_pos _obj' index_ pos
     pos' <- (wrapPtr Rectangle) pos
     touchManagedPtr _obj
     return pos'
@@ -1539,7 +1541,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -1567,7 +1569,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -1593,20 +1595,20 @@
 
 -- method Layout::move_cursor_visually
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "strong", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "old_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "old_trailing", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "direction", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_index", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "new_trailing", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "strong", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "old_index", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "old_trailing", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "direction", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_index", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "new_trailing", 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 "pango_layout_move_cursor_visually" pango_layout_move_cursor_visually :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
     CInt ->                                 -- strong : TBasicType TBoolean
-    Int32 ->                                -- old_index : TBasicType TInt32
-    Int32 ->                                -- old_trailing : TBasicType TInt32
-    Int32 ->                                -- direction : TBasicType TInt32
-    Ptr Int32 ->                            -- new_index : TBasicType TInt32
-    Ptr Int32 ->                            -- new_trailing : TBasicType TInt32
+    Int32 ->                                -- old_index : TBasicType TInt
+    Int32 ->                                -- old_trailing : TBasicType TInt
+    Int32 ->                                -- direction : TBasicType TInt
+    Ptr Int32 ->                            -- new_index : TBasicType TInt
+    Ptr Int32 ->                            -- new_trailing : TBasicType TInt
     IO ()
 
 
@@ -1639,7 +1641,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "alignment", argType = TInterface "Pango" "Alignment", 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
 
@@ -1669,7 +1671,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attrs", argType = TInterface "Pango" "AttrList", 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
 
@@ -1704,7 +1706,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "auto_dir", 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
 
@@ -1734,7 +1736,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ellipsize", argType = TInterface "Pango" "EllipsizeMode", 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
 
@@ -1764,7 +1766,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc", argType = TInterface "Pango" "FontDescription", 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
 
@@ -1797,15 +1799,15 @@
 
 -- method Layout::set_height
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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 "Pango" "Layout", 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 "pango_layout_set_height" pango_layout_set_height :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Int32 ->                                -- height : TBasicType TInt32
+    Int32 ->                                -- height : TBasicType TInt
     IO ()
 
 
@@ -1826,15 +1828,15 @@
 
 -- method Layout::set_indent
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "indent", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "indent", 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 "pango_layout_set_indent" pango_layout_set_indent :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Int32 ->                                -- indent : TBasicType TInt32
+    Int32 ->                                -- indent : TBasicType TInt
     IO ()
 
 
@@ -1857,7 +1859,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "justify", 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
 
@@ -1885,16 +1887,16 @@
 
 -- method Layout::set_markup
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "markup", argType = TBasicType TUTF8, 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}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "markup", argType = TBasicType TUTF8, 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}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_layout_set_markup" pango_layout_set_markup :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
     CString ->                              -- markup : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     IO ()
 
 
@@ -1918,16 +1920,16 @@
 
 -- method Layout::set_markup_with_accel
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "markup", argType = TBasicType TUTF8, 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 = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_char", argType = TBasicType TUniChar, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "markup", argType = TBasicType TUTF8, 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 = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_char", argType = TBasicType TUniChar, 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 "pango_layout_set_markup_with_accel" pango_layout_set_markup_with_accel :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
     CString ->                              -- markup : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     CInt ->                                 -- accel_marker : TBasicType TUniChar
     Ptr CInt ->                             -- accel_char : TBasicType TUniChar
     IO ()
@@ -1961,7 +1963,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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
 
@@ -1989,15 +1991,15 @@
 
 -- method Layout::set_spacing
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "spacing", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "spacing", 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 "pango_layout_set_spacing" pango_layout_set_spacing :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Int32 ->                                -- spacing : TBasicType TInt32
+    Int32 ->                                -- spacing : TBasicType TInt
     IO ()
 
 
@@ -2020,7 +2022,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tabs", argType = TInterface "Pango" "TabArray", 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
 
@@ -2053,16 +2055,16 @@
 
 -- method Layout::set_text
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, 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}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, 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}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_layout_set_text" pango_layout_set_text :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     IO ()
 
 
@@ -2086,15 +2088,15 @@
 
 -- method Layout::set_width
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_layout_set_width" pango_layout_set_width :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Int32 ->                                -- width : TBasicType TInt32
+    Int32 ->                                -- width : TBasicType TInt
     IO ()
 
 
@@ -2117,7 +2119,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "wrap", argType = TInterface "Pango" "WrapMode", 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
 
@@ -2145,18 +2147,18 @@
 
 -- method Layout::xy_to_index
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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 = "index_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "trailing", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Layout", 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 = "index_", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "trailing", argType = TBasicType TInt, 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 "pango_layout_xy_to_index" pango_layout_xy_to_index :: 
     Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
-    Ptr Int32 ->                            -- index_ : TBasicType TInt32
-    Ptr Int32 ->                            -- trailing : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
+    Ptr Int32 ->                            -- index_ : TBasicType TInt
+    Ptr Int32 ->                            -- trailing : TBasicType TInt
     IO CInt
 
 
@@ -2168,16 +2170,16 @@
     -> m (Bool,Int32,Int32)                 -- result
 layoutXyToIndex _obj x y = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    index <- allocMem :: IO (Ptr Int32)
+    index_ <- allocMem :: IO (Ptr Int32)
     trailing <- allocMem :: IO (Ptr Int32)
-    result <- pango_layout_xy_to_index _obj' x y index trailing
+    result <- pango_layout_xy_to_index _obj' x y index_ trailing
     let result' = (/= 0) result
-    index' <- peek index
+    index_' <- peek index_
     trailing' <- peek trailing
     touchManagedPtr _obj
-    freeMem index
+    freeMem index_
     freeMem trailing
-    return (result', index', trailing')
+    return (result', index_', trailing')
 
 data LayoutXyToIndexMethodInfo
 instance (signature ~ (Int32 -> Int32 -> m (Bool,Int32,Int32)), MonadIO m, LayoutK a) => MethodInfo LayoutXyToIndexMethodInfo a signature where
diff --git a/GI/Pango/Objects/Layout.hs-boot b/GI/Pango/Objects/Layout.hs-boot
--- a/GI/Pango/Objects/Layout.hs-boot
+++ b/GI/Pango/Objects/Layout.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.Layout 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/Pango/Objects/Renderer.hs b/GI/Pango/Objects/Renderer.hs
--- a/GI/Pango/Objects/Renderer.hs
+++ b/GI/Pango/Objects/Renderer.hs
@@ -116,9 +116,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
@@ -210,7 +210,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", 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
 
@@ -237,7 +237,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", 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
 
@@ -262,18 +262,18 @@
 
 -- method Renderer::draw_error_underline
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", 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 "Pango" "Renderer", 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 "pango_renderer_draw_error_underline" pango_renderer_draw_error_underline :: 
     Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
-    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 ()
 
 
@@ -299,7 +299,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyph", argType = TBasicType TUInt32, 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
 
@@ -336,9 +336,9 @@
 
 -- method Renderer::draw_glyph_item
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyph_item", argType = TInterface "Pango" "GlyphItem", 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 "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyph_item", argType = TInterface "Pango" "GlyphItem", 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
 
@@ -346,8 +346,8 @@
     Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
     CString ->                              -- text : TBasicType TUTF8
     Ptr GlyphItem ->                        -- glyph_item : TInterface "Pango" "GlyphItem"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
     IO ()
 
 
@@ -379,9 +379,9 @@
 
 -- method Renderer::draw_glyphs
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyphs", argType = TInterface "Pango" "GlyphString", 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 "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyphs", argType = TInterface "Pango" "GlyphString", 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
 
@@ -389,8 +389,8 @@
     Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
     Ptr Font ->                             -- font : TInterface "Pango" "Font"
     Ptr GlyphString ->                      -- glyphs : TInterface "Pango" "GlyphString"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
     IO ()
 
 
@@ -418,17 +418,17 @@
 
 -- method Renderer::draw_layout
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "layout", argType = TInterface "Pango" "Layout", 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 "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "layout", argType = TInterface "Pango" "Layout", 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 "pango_renderer_draw_layout" pango_renderer_draw_layout :: 
     Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
     Ptr Layout ->                           -- layout : TInterface "Pango" "Layout"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
     IO ()
 
 
@@ -453,17 +453,17 @@
 
 -- method Renderer::draw_layout_line
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TInterface "Pango" "LayoutLine", 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 "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TInterface "Pango" "LayoutLine", 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 "pango_renderer_draw_layout_line" pango_renderer_draw_layout_line :: 
     Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
     Ptr LayoutLine ->                       -- line : TInterface "Pango" "LayoutLine"
-    Int32 ->                                -- x : TBasicType TInt32
-    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- x : TBasicType TInt
+    Int32 ->                                -- y : TBasicType TInt
     IO ()
 
 
@@ -488,19 +488,19 @@
 
 -- method Renderer::draw_rectangle
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "part", argType = TInterface "Pango" "RenderPart", 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 "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "part", argType = TInterface "Pango" "RenderPart", 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 "pango_renderer_draw_rectangle" pango_renderer_draw_rectangle :: 
     Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
     CUInt ->                                -- part : TInterface "Pango" "RenderPart"
-    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 ()
 
 
@@ -528,7 +528,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y1_", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x11", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x21", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y2", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x12", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x22", 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
 
@@ -548,23 +548,23 @@
     (MonadIO m, RendererK a) =>
     a                                       -- _obj
     -> RenderPart                           -- part
-    -> Double                               -- y1
+    -> Double                               -- y1_
     -> Double                               -- x11
     -> Double                               -- x21
     -> Double                               -- y2
     -> Double                               -- x12
     -> Double                               -- x22
     -> m ()                                 -- result
-rendererDrawTrapezoid _obj part y1 x11 x21 y2 x12 x22 = liftIO $ do
+rendererDrawTrapezoid _obj part y1_ x11 x21 y2 x12 x22 = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let part' = (fromIntegral . fromEnum) part
-    let y1' = realToFrac y1
+    let y1_' = realToFrac y1_
     let x11' = realToFrac x11
     let x21' = realToFrac x21
     let y2' = realToFrac y2
     let x12' = realToFrac x12
     let x22' = realToFrac x22
-    pango_renderer_draw_trapezoid _obj' part' y1' x11' x21' y2' x12' x22'
+    pango_renderer_draw_trapezoid _obj' part' y1_' x11' x21' y2' x12' x22'
     touchManagedPtr _obj
     return ()
 
@@ -576,7 +576,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt16
+-- returnType : Just (TBasicType TUInt16)
 -- throws : False
 -- Skip return : False
 
@@ -606,7 +606,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Color"
+-- returnType : Just (TInterface "Pango" "Color")
 -- throws : False
 -- Skip return : False
 
@@ -620,25 +620,26 @@
     (MonadIO m, RendererK a) =>
     a                                       -- _obj
     -> RenderPart                           -- part
-    -> m Color                              -- result
+    -> m (Maybe Color)                      -- result
 rendererGetColor _obj part = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     let part' = (fromIntegral . fromEnum) part
     result <- pango_renderer_get_color _obj' part'
-    checkUnexpectedReturnNULL "pango_renderer_get_color" result
-    result' <- (newBoxed Color) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed Color) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data RendererGetColorMethodInfo
-instance (signature ~ (RenderPart -> m Color), MonadIO m, RendererK a) => MethodInfo RendererGetColorMethodInfo a signature where
+instance (signature ~ (RenderPart -> m (Maybe Color)), MonadIO m, RendererK a) => MethodInfo RendererGetColorMethodInfo a signature where
     overloadedMethod _ = rendererGetColor
 
 -- method Renderer::get_layout
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Layout"
+-- returnType : Just (TInterface "Pango" "Layout")
 -- throws : False
 -- Skip return : False
 
@@ -650,24 +651,25 @@
 rendererGetLayout ::
     (MonadIO m, RendererK a) =>
     a                                       -- _obj
-    -> m Layout                             -- result
+    -> m (Maybe Layout)                     -- result
 rendererGetLayout _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_renderer_get_layout _obj'
-    checkUnexpectedReturnNULL "pango_renderer_get_layout" result
-    result' <- (newObject Layout) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newObject Layout) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data RendererGetLayoutMethodInfo
-instance (signature ~ (m Layout), MonadIO m, RendererK a) => MethodInfo RendererGetLayoutMethodInfo a signature where
+instance (signature ~ (m (Maybe Layout)), MonadIO m, RendererK a) => MethodInfo RendererGetLayoutMethodInfo a signature where
     overloadedMethod _ = rendererGetLayout
 
 -- method Renderer::get_layout_line
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "LayoutLine"
+-- returnType : Just (TInterface "Pango" "LayoutLine")
 -- throws : False
 -- Skip return : False
 
@@ -679,24 +681,25 @@
 rendererGetLayoutLine ::
     (MonadIO m, RendererK a) =>
     a                                       -- _obj
-    -> m LayoutLine                         -- result
+    -> m (Maybe LayoutLine)                 -- result
 rendererGetLayoutLine _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_renderer_get_layout_line _obj'
-    checkUnexpectedReturnNULL "pango_renderer_get_layout_line" result
-    result' <- (newBoxed LayoutLine) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed LayoutLine) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data RendererGetLayoutLineMethodInfo
-instance (signature ~ (m LayoutLine), MonadIO m, RendererK a) => MethodInfo RendererGetLayoutLineMethodInfo a signature where
+instance (signature ~ (m (Maybe LayoutLine)), MonadIO m, RendererK a) => MethodInfo RendererGetLayoutLineMethodInfo a signature where
     overloadedMethod _ = rendererGetLayoutLine
 
 -- method Renderer::get_matrix
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Matrix"
+-- returnType : Just (TInterface "Pango" "Matrix")
 -- throws : False
 -- Skip return : False
 
@@ -708,24 +711,25 @@
 rendererGetMatrix ::
     (MonadIO m, RendererK a) =>
     a                                       -- _obj
-    -> m Matrix                             -- result
+    -> m (Maybe Matrix)                     -- result
 rendererGetMatrix _obj = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     result <- pango_renderer_get_matrix _obj'
-    checkUnexpectedReturnNULL "pango_renderer_get_matrix" result
-    result' <- (newBoxed Matrix) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed Matrix) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data RendererGetMatrixMethodInfo
-instance (signature ~ (m Matrix), MonadIO m, RendererK a) => MethodInfo RendererGetMatrixMethodInfo a signature where
+instance (signature ~ (m (Maybe Matrix)), MonadIO m, RendererK a) => MethodInfo RendererGetMatrixMethodInfo a signature where
     overloadedMethod _ = rendererGetMatrix
 
 -- method Renderer::part_changed
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "part", argType = TInterface "Pango" "RenderPart", 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
 
@@ -755,7 +759,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "alpha", argType = TBasicType TUInt16, 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
 
@@ -787,7 +791,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "color", argType = TInterface "Pango" "Color", 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
 
@@ -825,7 +829,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "matrix", argType = TInterface "Pango" "Matrix", 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
 
diff --git a/GI/Pango/Objects/Renderer.hs-boot b/GI/Pango/Objects/Renderer.hs-boot
--- a/GI/Pango/Objects/Renderer.hs-boot
+++ b/GI/Pango/Objects/Renderer.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Objects.Renderer 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/Pango/Structs.hs b/GI/Pango/Structs.hs
--- a/GI/Pango/Structs.hs
+++ b/GI/Pango/Structs.hs
@@ -90,9 +90,9 @@
 import GI.Pango.Structs.ScriptIter
 import GI.Pango.Structs.TabArray
 
-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/Pango/Structs/Analysis.hs b/GI/Pango/Structs/Analysis.hs
--- a/GI/Pango/Structs/Analysis.hs
+++ b/GI/Pango/Structs/Analysis.hs
@@ -20,48 +20,71 @@
 
  -- * Properties
 -- ** ExtraAttrs
+    analysisClearExtraAttrs                 ,
+    analysisExtraAttrs                      ,
     analysisReadExtraAttrs                  ,
+    analysisWriteExtraAttrs                 ,
 
 
 -- ** Flags
+    analysisFlags                           ,
     analysisReadFlags                       ,
+    analysisWriteFlags                      ,
 
 
 -- ** Font
+    analysisClearFont                       ,
+    analysisFont                            ,
     analysisReadFont                        ,
+    analysisWriteFont                       ,
 
 
 -- ** Gravity
+    analysisGravity                         ,
     analysisReadGravity                     ,
+    analysisWriteGravity                    ,
 
 
 -- ** LangEngine
+    analysisClearLangEngine                 ,
+    analysisLangEngine                      ,
     analysisReadLangEngine                  ,
+    analysisWriteLangEngine                 ,
 
 
 -- ** Language
+    analysisClearLanguage                   ,
+    analysisLanguage                        ,
     analysisReadLanguage                    ,
+    analysisWriteLanguage                   ,
 
 
 -- ** Level
+    analysisLevel                           ,
     analysisReadLevel                       ,
+    analysisWriteLevel                      ,
 
 
 -- ** Script
     analysisReadScript                      ,
+    analysisScript                          ,
+    analysisWriteScript                     ,
 
 
 -- ** ShapeEngine
+    analysisClearShapeEngine                ,
     analysisReadShapeEngine                 ,
+    analysisShapeEngine                     ,
+    analysisWriteShapeEngine                ,
 
 
 
 
     ) 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,58 +97,277 @@
 newZeroAnalysis :: MonadIO m => m Analysis
 newZeroAnalysis = liftIO $ callocBytes 48 >>= wrapPtr Analysis
 
+instance tag ~ 'AttrSet => Constructible Analysis tag where
+    new _ attrs = do
+        o <- newZeroAnalysis
+        GI.Attributes.set o attrs
+        return o
+
+
 noAnalysis :: Maybe Analysis
 noAnalysis = Nothing
 
-analysisReadShapeEngine :: Analysis -> IO EngineShape
-analysisReadShapeEngine s = withManagedPtr s $ \ptr -> do
+analysisReadShapeEngine :: MonadIO m => Analysis -> m (Maybe EngineShape)
+analysisReadShapeEngine s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr EngineShape)
-    val' <- (newObject EngineShape) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject EngineShape) val'
+        return val''
+    return result
 
-analysisReadLangEngine :: Analysis -> IO EngineLang
-analysisReadLangEngine s = withManagedPtr s $ \ptr -> do
+analysisWriteShapeEngine :: MonadIO m => Analysis -> Ptr EngineShape -> m ()
+analysisWriteShapeEngine s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr EngineShape)
+
+analysisClearShapeEngine :: MonadIO m => Analysis -> m ()
+analysisClearShapeEngine s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EngineShape)
+
+data AnalysisShapeEngineFieldInfo
+instance AttrInfo AnalysisShapeEngineFieldInfo where
+    type AttrAllowedOps AnalysisShapeEngineFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AnalysisShapeEngineFieldInfo = (~) (Ptr EngineShape)
+    type AttrBaseTypeConstraint AnalysisShapeEngineFieldInfo = (~) Analysis
+    type AttrGetType AnalysisShapeEngineFieldInfo = Maybe EngineShape
+    type AttrLabel AnalysisShapeEngineFieldInfo = "shape_engine"
+    attrGet _ = analysisReadShapeEngine
+    attrSet _ = analysisWriteShapeEngine
+    attrConstruct = undefined
+    attrClear _ = analysisClearShapeEngine
+
+analysisShapeEngine :: AttrLabelProxy "shapeEngine"
+analysisShapeEngine = AttrLabelProxy
+
+
+analysisReadLangEngine :: MonadIO m => Analysis -> m (Maybe EngineLang)
+analysisReadLangEngine s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr EngineLang)
-    val' <- (newObject EngineLang) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject EngineLang) val'
+        return val''
+    return result
 
-analysisReadFont :: Analysis -> IO Font
-analysisReadFont s = withManagedPtr s $ \ptr -> do
+analysisWriteLangEngine :: MonadIO m => Analysis -> Ptr EngineLang -> m ()
+analysisWriteLangEngine s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr EngineLang)
+
+analysisClearLangEngine :: MonadIO m => Analysis -> m ()
+analysisClearLangEngine s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr EngineLang)
+
+data AnalysisLangEngineFieldInfo
+instance AttrInfo AnalysisLangEngineFieldInfo where
+    type AttrAllowedOps AnalysisLangEngineFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AnalysisLangEngineFieldInfo = (~) (Ptr EngineLang)
+    type AttrBaseTypeConstraint AnalysisLangEngineFieldInfo = (~) Analysis
+    type AttrGetType AnalysisLangEngineFieldInfo = Maybe EngineLang
+    type AttrLabel AnalysisLangEngineFieldInfo = "lang_engine"
+    attrGet _ = analysisReadLangEngine
+    attrSet _ = analysisWriteLangEngine
+    attrConstruct = undefined
+    attrClear _ = analysisClearLangEngine
+
+analysisLangEngine :: AttrLabelProxy "langEngine"
+analysisLangEngine = AttrLabelProxy
+
+
+analysisReadFont :: MonadIO m => Analysis -> m (Maybe Font)
+analysisReadFont s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr Font)
-    val' <- (newObject Font) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Font) val'
+        return val''
+    return result
 
-analysisReadLevel :: Analysis -> IO Word8
-analysisReadLevel s = withManagedPtr s $ \ptr -> do
+analysisWriteFont :: MonadIO m => Analysis -> Ptr Font -> m ()
+analysisWriteFont s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Ptr Font)
+
+analysisClearFont :: MonadIO m => Analysis -> m ()
+analysisClearFont s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: Ptr Font)
+
+data AnalysisFontFieldInfo
+instance AttrInfo AnalysisFontFieldInfo where
+    type AttrAllowedOps AnalysisFontFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AnalysisFontFieldInfo = (~) (Ptr Font)
+    type AttrBaseTypeConstraint AnalysisFontFieldInfo = (~) Analysis
+    type AttrGetType AnalysisFontFieldInfo = Maybe Font
+    type AttrLabel AnalysisFontFieldInfo = "font"
+    attrGet _ = analysisReadFont
+    attrSet _ = analysisWriteFont
+    attrConstruct = undefined
+    attrClear _ = analysisClearFont
+
+analysisFont :: AttrLabelProxy "font"
+analysisFont = AttrLabelProxy
+
+
+analysisReadLevel :: MonadIO m => Analysis -> m Word8
+analysisReadLevel s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO Word8
     return val
 
-analysisReadGravity :: Analysis -> IO Word8
-analysisReadGravity s = withManagedPtr s $ \ptr -> do
+analysisWriteLevel :: MonadIO m => Analysis -> Word8 -> m ()
+analysisWriteLevel s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Word8)
+
+data AnalysisLevelFieldInfo
+instance AttrInfo AnalysisLevelFieldInfo where
+    type AttrAllowedOps AnalysisLevelFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AnalysisLevelFieldInfo = (~) Word8
+    type AttrBaseTypeConstraint AnalysisLevelFieldInfo = (~) Analysis
+    type AttrGetType AnalysisLevelFieldInfo = Word8
+    type AttrLabel AnalysisLevelFieldInfo = "level"
+    attrGet _ = analysisReadLevel
+    attrSet _ = analysisWriteLevel
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+analysisLevel :: AttrLabelProxy "level"
+analysisLevel = AttrLabelProxy
+
+
+analysisReadGravity :: MonadIO m => Analysis -> m Word8
+analysisReadGravity s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 25) :: IO Word8
     return val
 
-analysisReadFlags :: Analysis -> IO Word8
-analysisReadFlags s = withManagedPtr s $ \ptr -> do
+analysisWriteGravity :: MonadIO m => Analysis -> Word8 -> m ()
+analysisWriteGravity s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 25) (val :: Word8)
+
+data AnalysisGravityFieldInfo
+instance AttrInfo AnalysisGravityFieldInfo where
+    type AttrAllowedOps AnalysisGravityFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AnalysisGravityFieldInfo = (~) Word8
+    type AttrBaseTypeConstraint AnalysisGravityFieldInfo = (~) Analysis
+    type AttrGetType AnalysisGravityFieldInfo = Word8
+    type AttrLabel AnalysisGravityFieldInfo = "gravity"
+    attrGet _ = analysisReadGravity
+    attrSet _ = analysisWriteGravity
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+analysisGravity :: AttrLabelProxy "gravity"
+analysisGravity = AttrLabelProxy
+
+
+analysisReadFlags :: MonadIO m => Analysis -> m Word8
+analysisReadFlags s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 26) :: IO Word8
     return val
 
-analysisReadScript :: Analysis -> IO Word8
-analysisReadScript s = withManagedPtr s $ \ptr -> do
+analysisWriteFlags :: MonadIO m => Analysis -> Word8 -> m ()
+analysisWriteFlags s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 26) (val :: Word8)
+
+data AnalysisFlagsFieldInfo
+instance AttrInfo AnalysisFlagsFieldInfo where
+    type AttrAllowedOps AnalysisFlagsFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AnalysisFlagsFieldInfo = (~) Word8
+    type AttrBaseTypeConstraint AnalysisFlagsFieldInfo = (~) Analysis
+    type AttrGetType AnalysisFlagsFieldInfo = Word8
+    type AttrLabel AnalysisFlagsFieldInfo = "flags"
+    attrGet _ = analysisReadFlags
+    attrSet _ = analysisWriteFlags
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+analysisFlags :: AttrLabelProxy "flags"
+analysisFlags = AttrLabelProxy
+
+
+analysisReadScript :: MonadIO m => Analysis -> m Word8
+analysisReadScript s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 27) :: IO Word8
     return val
 
-analysisReadLanguage :: Analysis -> IO Language
-analysisReadLanguage s = withManagedPtr s $ \ptr -> do
+analysisWriteScript :: MonadIO m => Analysis -> Word8 -> m ()
+analysisWriteScript s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 27) (val :: Word8)
+
+data AnalysisScriptFieldInfo
+instance AttrInfo AnalysisScriptFieldInfo where
+    type AttrAllowedOps AnalysisScriptFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AnalysisScriptFieldInfo = (~) Word8
+    type AttrBaseTypeConstraint AnalysisScriptFieldInfo = (~) Analysis
+    type AttrGetType AnalysisScriptFieldInfo = Word8
+    type AttrLabel AnalysisScriptFieldInfo = "script"
+    attrGet _ = analysisReadScript
+    attrSet _ = analysisWriteScript
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+analysisScript :: AttrLabelProxy "script"
+analysisScript = AttrLabelProxy
+
+
+analysisReadLanguage :: MonadIO m => Analysis -> m (Maybe Language)
+analysisReadLanguage s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO (Ptr Language)
-    val' <- (newBoxed Language) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newBoxed Language) val'
+        return val''
+    return result
 
-analysisReadExtraAttrs :: Analysis -> IO ([Ptr ()])
-analysisReadExtraAttrs s = withManagedPtr s $ \ptr -> do
+analysisWriteLanguage :: MonadIO m => Analysis -> Ptr Language -> m ()
+analysisWriteLanguage s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Ptr Language)
+
+analysisClearLanguage :: MonadIO m => Analysis -> m ()
+analysisClearLanguage s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (nullPtr :: Ptr Language)
+
+data AnalysisLanguageFieldInfo
+instance AttrInfo AnalysisLanguageFieldInfo where
+    type AttrAllowedOps AnalysisLanguageFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AnalysisLanguageFieldInfo = (~) (Ptr Language)
+    type AttrBaseTypeConstraint AnalysisLanguageFieldInfo = (~) Analysis
+    type AttrGetType AnalysisLanguageFieldInfo = Maybe Language
+    type AttrLabel AnalysisLanguageFieldInfo = "language"
+    attrGet _ = analysisReadLanguage
+    attrSet _ = analysisWriteLanguage
+    attrConstruct = undefined
+    attrClear _ = analysisClearLanguage
+
+analysisLanguage :: AttrLabelProxy "language"
+analysisLanguage = AttrLabelProxy
+
+
+analysisReadExtraAttrs :: MonadIO m => Analysis -> m ([Ptr ()])
+analysisReadExtraAttrs s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO (Ptr (GSList (Ptr ())))
     val' <- unpackGSList val
     return val'
+
+analysisWriteExtraAttrs :: MonadIO m => Analysis -> Ptr (GSList (Ptr ())) -> m ()
+analysisWriteExtraAttrs s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (val :: Ptr (GSList (Ptr ())))
+
+analysisClearExtraAttrs :: MonadIO m => Analysis -> m ()
+analysisClearExtraAttrs s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (nullPtr :: Ptr (GSList (Ptr ())))
+
+data AnalysisExtraAttrsFieldInfo
+instance AttrInfo AnalysisExtraAttrsFieldInfo where
+    type AttrAllowedOps AnalysisExtraAttrsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AnalysisExtraAttrsFieldInfo = (~) (Ptr (GSList (Ptr ())))
+    type AttrBaseTypeConstraint AnalysisExtraAttrsFieldInfo = (~) Analysis
+    type AttrGetType AnalysisExtraAttrsFieldInfo = [Ptr ()]
+    type AttrLabel AnalysisExtraAttrsFieldInfo = "extra_attrs"
+    attrGet _ = analysisReadExtraAttrs
+    attrSet _ = analysisWriteExtraAttrs
+    attrConstruct = undefined
+    attrClear _ = analysisClearExtraAttrs
+
+analysisExtraAttrs :: AttrLabelProxy "extraAttrs"
+analysisExtraAttrs = AttrLabelProxy
+
+
+
+type instance AttributeList Analysis = AnalysisAttributeList
+type AnalysisAttributeList = ('[ '("shapeEngine", AnalysisShapeEngineFieldInfo), '("langEngine", AnalysisLangEngineFieldInfo), '("font", AnalysisFontFieldInfo), '("level", AnalysisLevelFieldInfo), '("gravity", AnalysisGravityFieldInfo), '("flags", AnalysisFlagsFieldInfo), '("script", AnalysisScriptFieldInfo), '("language", AnalysisLanguageFieldInfo), '("extraAttrs", AnalysisExtraAttrsFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveAnalysisMethod (t :: Symbol) (o :: *) :: * where
     ResolveAnalysisMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/Analysis.hs-boot b/GI/Pango/Structs/Analysis.hs-boot
--- a/GI/Pango/Structs/Analysis.hs-boot
+++ b/GI/Pango/Structs/Analysis.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.Analysis 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/Pango/Structs/AttrClass.hs b/GI/Pango/Structs/AttrClass.hs
--- a/GI/Pango/Structs/AttrClass.hs
+++ b/GI/Pango/Structs/AttrClass.hs
@@ -23,15 +23,17 @@
  -- * Properties
 -- ** Type
     attrClassReadType                       ,
+    attrClassType                           ,
+    attrClassWriteType                      ,
 
 
 
 
     ) 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
@@ -44,18 +46,48 @@
 newZeroAttrClass :: MonadIO m => m AttrClass
 newZeroAttrClass = liftIO $ callocBytes 32 >>= wrapPtr AttrClass
 
+instance tag ~ 'AttrSet => Constructible AttrClass tag where
+    new _ attrs = do
+        o <- newZeroAttrClass
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttrClass :: Maybe AttrClass
 noAttrClass = Nothing
 
-attrClassReadType :: AttrClass -> IO AttrType
-attrClassReadType s = withManagedPtr s $ \ptr -> do
+attrClassReadType :: MonadIO m => AttrClass -> m AttrType
+attrClassReadType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
--- XXX Skipped getter for "AttrClass:destroy" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+attrClassWriteType :: MonadIO m => AttrClass -> AttrType -> m ()
+attrClassWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
 
--- XXX Skipped getter for "AttrClass:equal" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+data AttrClassTypeFieldInfo
+instance AttrInfo AttrClassTypeFieldInfo where
+    type AttrAllowedOps AttrClassTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AttrClassTypeFieldInfo = (~) AttrType
+    type AttrBaseTypeConstraint AttrClassTypeFieldInfo = (~) AttrClass
+    type AttrGetType AttrClassTypeFieldInfo = AttrType
+    type AttrLabel AttrClassTypeFieldInfo = "type"
+    attrGet _ = attrClassReadType
+    attrSet _ = attrClassWriteType
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+attrClassType :: AttrLabelProxy "type"
+attrClassType = AttrLabelProxy
+
+
+-- XXX Skipped attribute for "AttrClass:destroy" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+-- XXX Skipped attribute for "AttrClass:equal" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+
+type instance AttributeList AttrClass = AttrClassAttributeList
+type AttrClassAttributeList = ('[ '("type", AttrClassTypeFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveAttrClassMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttrClassMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/AttrClass.hs-boot b/GI/Pango/Structs/AttrClass.hs-boot
--- a/GI/Pango/Structs/AttrClass.hs-boot
+++ b/GI/Pango/Structs/AttrClass.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrClass 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/Pango/Structs/AttrColor.hs b/GI/Pango/Structs/AttrColor.hs
--- a/GI/Pango/Structs/AttrColor.hs
+++ b/GI/Pango/Structs/AttrColor.hs
@@ -20,20 +20,26 @@
 
  -- * Properties
 -- ** Attr
+    attrColorAttr                           ,
+    attrColorClearAttr                      ,
     attrColorReadAttr                       ,
+    attrColorWriteAttr                      ,
 
 
 -- ** Color
+    attrColorClearColor                     ,
+    attrColorColor                          ,
     attrColorReadColor                      ,
+    attrColorWriteColor                     ,
 
 
 
 
     ) 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
@@ -46,20 +52,83 @@
 newZeroAttrColor :: MonadIO m => m AttrColor
 newZeroAttrColor = liftIO $ callocBytes 24 >>= wrapPtr AttrColor
 
+instance tag ~ 'AttrSet => Constructible AttrColor tag where
+    new _ attrs = do
+        o <- newZeroAttrColor
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttrColor :: Maybe AttrColor
 noAttrColor = Nothing
 
-attrColorReadAttr :: AttrColor -> IO Attribute
-attrColorReadAttr s = withManagedPtr s $ \ptr -> do
+attrColorReadAttr :: MonadIO m => AttrColor -> m (Maybe Attribute)
+attrColorReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
-    val' <- (newPtr 16 Attribute) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Attribute) val'
+        return val''
+    return result
 
-attrColorReadColor :: AttrColor -> IO Color
-attrColorReadColor s = withManagedPtr s $ \ptr -> do
+attrColorWriteAttr :: MonadIO m => AttrColor -> Ptr Attribute -> m ()
+attrColorWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Attribute)
+
+attrColorClearAttr :: MonadIO m => AttrColor -> m ()
+attrColorClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)
+
+data AttrColorAttrFieldInfo
+instance AttrInfo AttrColorAttrFieldInfo where
+    type AttrAllowedOps AttrColorAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrColorAttrFieldInfo = (~) (Ptr Attribute)
+    type AttrBaseTypeConstraint AttrColorAttrFieldInfo = (~) AttrColor
+    type AttrGetType AttrColorAttrFieldInfo = Maybe Attribute
+    type AttrLabel AttrColorAttrFieldInfo = "attr"
+    attrGet _ = attrColorReadAttr
+    attrSet _ = attrColorWriteAttr
+    attrConstruct = undefined
+    attrClear _ = attrColorClearAttr
+
+attrColorAttr :: AttrLabelProxy "attr"
+attrColorAttr = AttrLabelProxy
+
+
+attrColorReadColor :: MonadIO m => AttrColor -> m (Maybe Color)
+attrColorReadColor s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr Color)
-    val' <- (newBoxed Color) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newBoxed Color) val'
+        return val''
+    return result
+
+attrColorWriteColor :: MonadIO m => AttrColor -> Ptr Color -> m ()
+attrColorWriteColor s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Ptr Color)
+
+attrColorClearColor :: MonadIO m => AttrColor -> m ()
+attrColorClearColor s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: Ptr Color)
+
+data AttrColorColorFieldInfo
+instance AttrInfo AttrColorColorFieldInfo where
+    type AttrAllowedOps AttrColorColorFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrColorColorFieldInfo = (~) (Ptr Color)
+    type AttrBaseTypeConstraint AttrColorColorFieldInfo = (~) AttrColor
+    type AttrGetType AttrColorColorFieldInfo = Maybe Color
+    type AttrLabel AttrColorColorFieldInfo = "color"
+    attrGet _ = attrColorReadColor
+    attrSet _ = attrColorWriteColor
+    attrConstruct = undefined
+    attrClear _ = attrColorClearColor
+
+attrColorColor :: AttrLabelProxy "color"
+attrColorColor = AttrLabelProxy
+
+
+
+type instance AttributeList AttrColor = AttrColorAttributeList
+type AttrColorAttributeList = ('[ '("attr", AttrColorAttrFieldInfo), '("color", AttrColorColorFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveAttrColorMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttrColorMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/AttrColor.hs-boot b/GI/Pango/Structs/AttrColor.hs-boot
--- a/GI/Pango/Structs/AttrColor.hs-boot
+++ b/GI/Pango/Structs/AttrColor.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrColor 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/Pango/Structs/AttrFloat.hs b/GI/Pango/Structs/AttrFloat.hs
--- a/GI/Pango/Structs/AttrFloat.hs
+++ b/GI/Pango/Structs/AttrFloat.hs
@@ -20,20 +20,25 @@
 
  -- * Properties
 -- ** Attr
+    attrFloatAttr                           ,
+    attrFloatClearAttr                      ,
     attrFloatReadAttr                       ,
+    attrFloatWriteAttr                      ,
 
 
 -- ** Value
     attrFloatReadValue                      ,
+    attrFloatValue                          ,
+    attrFloatWriteValue                     ,
 
 
 
 
     ) 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
@@ -46,20 +51,78 @@
 newZeroAttrFloat :: MonadIO m => m AttrFloat
 newZeroAttrFloat = liftIO $ callocBytes 24 >>= wrapPtr AttrFloat
 
+instance tag ~ 'AttrSet => Constructible AttrFloat tag where
+    new _ attrs = do
+        o <- newZeroAttrFloat
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttrFloat :: Maybe AttrFloat
 noAttrFloat = Nothing
 
-attrFloatReadAttr :: AttrFloat -> IO Attribute
-attrFloatReadAttr s = withManagedPtr s $ \ptr -> do
+attrFloatReadAttr :: MonadIO m => AttrFloat -> m (Maybe Attribute)
+attrFloatReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
-    val' <- (newPtr 16 Attribute) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Attribute) val'
+        return val''
+    return result
 
-attrFloatReadValue :: AttrFloat -> IO Double
-attrFloatReadValue s = withManagedPtr s $ \ptr -> do
+attrFloatWriteAttr :: MonadIO m => AttrFloat -> Ptr Attribute -> m ()
+attrFloatWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Attribute)
+
+attrFloatClearAttr :: MonadIO m => AttrFloat -> m ()
+attrFloatClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)
+
+data AttrFloatAttrFieldInfo
+instance AttrInfo AttrFloatAttrFieldInfo where
+    type AttrAllowedOps AttrFloatAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrFloatAttrFieldInfo = (~) (Ptr Attribute)
+    type AttrBaseTypeConstraint AttrFloatAttrFieldInfo = (~) AttrFloat
+    type AttrGetType AttrFloatAttrFieldInfo = Maybe Attribute
+    type AttrLabel AttrFloatAttrFieldInfo = "attr"
+    attrGet _ = attrFloatReadAttr
+    attrSet _ = attrFloatWriteAttr
+    attrConstruct = undefined
+    attrClear _ = attrFloatClearAttr
+
+attrFloatAttr :: AttrLabelProxy "attr"
+attrFloatAttr = AttrLabelProxy
+
+
+attrFloatReadValue :: MonadIO m => AttrFloat -> m Double
+attrFloatReadValue s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO CDouble
     let val' = realToFrac val
     return val'
+
+attrFloatWriteValue :: MonadIO m => AttrFloat -> Double -> m ()
+attrFloatWriteValue s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 16) (val' :: CDouble)
+
+data AttrFloatValueFieldInfo
+instance AttrInfo AttrFloatValueFieldInfo where
+    type AttrAllowedOps AttrFloatValueFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AttrFloatValueFieldInfo = (~) Double
+    type AttrBaseTypeConstraint AttrFloatValueFieldInfo = (~) AttrFloat
+    type AttrGetType AttrFloatValueFieldInfo = Double
+    type AttrLabel AttrFloatValueFieldInfo = "value"
+    attrGet _ = attrFloatReadValue
+    attrSet _ = attrFloatWriteValue
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+attrFloatValue :: AttrLabelProxy "value"
+attrFloatValue = AttrLabelProxy
+
+
+
+type instance AttributeList AttrFloat = AttrFloatAttributeList
+type AttrFloatAttributeList = ('[ '("attr", AttrFloatAttrFieldInfo), '("value", AttrFloatValueFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveAttrFloatMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttrFloatMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/AttrFloat.hs-boot b/GI/Pango/Structs/AttrFloat.hs-boot
--- a/GI/Pango/Structs/AttrFloat.hs-boot
+++ b/GI/Pango/Structs/AttrFloat.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrFloat 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/Pango/Structs/AttrFontDesc.hs b/GI/Pango/Structs/AttrFontDesc.hs
--- a/GI/Pango/Structs/AttrFontDesc.hs
+++ b/GI/Pango/Structs/AttrFontDesc.hs
@@ -18,22 +18,35 @@
     noAttrFontDesc                          ,
 
 
+ -- * Methods
+-- ** attrFontDescNew
+    attrFontDescNew                         ,
+
+
+
+
  -- * Properties
 -- ** Attr
+    attrFontDescAttr                        ,
+    attrFontDescClearAttr                   ,
     attrFontDescReadAttr                    ,
+    attrFontDescWriteAttr                   ,
 
 
 -- ** Desc
+    attrFontDescClearDesc                   ,
+    attrFontDescDesc                        ,
     attrFontDescReadDesc                    ,
+    attrFontDescWriteDesc                   ,
 
 
 
 
     ) 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
@@ -46,20 +59,108 @@
 newZeroAttrFontDesc :: MonadIO m => m AttrFontDesc
 newZeroAttrFontDesc = liftIO $ callocBytes 24 >>= wrapPtr AttrFontDesc
 
+instance tag ~ 'AttrSet => Constructible AttrFontDesc tag where
+    new _ attrs = do
+        o <- newZeroAttrFontDesc
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttrFontDesc :: Maybe AttrFontDesc
 noAttrFontDesc = Nothing
 
-attrFontDescReadAttr :: AttrFontDesc -> IO Attribute
-attrFontDescReadAttr s = withManagedPtr s $ \ptr -> do
+attrFontDescReadAttr :: MonadIO m => AttrFontDesc -> m (Maybe Attribute)
+attrFontDescReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
-    val' <- (newPtr 16 Attribute) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Attribute) val'
+        return val''
+    return result
 
-attrFontDescReadDesc :: AttrFontDesc -> IO FontDescription
-attrFontDescReadDesc s = withManagedPtr s $ \ptr -> do
+attrFontDescWriteAttr :: MonadIO m => AttrFontDesc -> Ptr Attribute -> m ()
+attrFontDescWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Attribute)
+
+attrFontDescClearAttr :: MonadIO m => AttrFontDesc -> m ()
+attrFontDescClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)
+
+data AttrFontDescAttrFieldInfo
+instance AttrInfo AttrFontDescAttrFieldInfo where
+    type AttrAllowedOps AttrFontDescAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrFontDescAttrFieldInfo = (~) (Ptr Attribute)
+    type AttrBaseTypeConstraint AttrFontDescAttrFieldInfo = (~) AttrFontDesc
+    type AttrGetType AttrFontDescAttrFieldInfo = Maybe Attribute
+    type AttrLabel AttrFontDescAttrFieldInfo = "attr"
+    attrGet _ = attrFontDescReadAttr
+    attrSet _ = attrFontDescWriteAttr
+    attrConstruct = undefined
+    attrClear _ = attrFontDescClearAttr
+
+attrFontDescAttr :: AttrLabelProxy "attr"
+attrFontDescAttr = AttrLabelProxy
+
+
+attrFontDescReadDesc :: MonadIO m => AttrFontDesc -> m (Maybe FontDescription)
+attrFontDescReadDesc s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr FontDescription)
-    val' <- (newBoxed FontDescription) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newBoxed FontDescription) val'
+        return val''
+    return result
+
+attrFontDescWriteDesc :: MonadIO m => AttrFontDesc -> Ptr FontDescription -> m ()
+attrFontDescWriteDesc s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Ptr FontDescription)
+
+attrFontDescClearDesc :: MonadIO m => AttrFontDesc -> m ()
+attrFontDescClearDesc s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: Ptr FontDescription)
+
+data AttrFontDescDescFieldInfo
+instance AttrInfo AttrFontDescDescFieldInfo where
+    type AttrAllowedOps AttrFontDescDescFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrFontDescDescFieldInfo = (~) (Ptr FontDescription)
+    type AttrBaseTypeConstraint AttrFontDescDescFieldInfo = (~) AttrFontDesc
+    type AttrGetType AttrFontDescDescFieldInfo = Maybe FontDescription
+    type AttrLabel AttrFontDescDescFieldInfo = "desc"
+    attrGet _ = attrFontDescReadDesc
+    attrSet _ = attrFontDescWriteDesc
+    attrConstruct = undefined
+    attrClear _ = attrFontDescClearDesc
+
+attrFontDescDesc :: AttrLabelProxy "desc"
+attrFontDescDesc = AttrLabelProxy
+
+
+
+type instance AttributeList AttrFontDesc = AttrFontDescAttributeList
+type AttrFontDescAttributeList = ('[ '("attr", AttrFontDescAttrFieldInfo), '("desc", AttrFontDescDescFieldInfo)] :: [(Symbol, *)])
+
+-- method AttrFontDesc::new
+-- method type : MemberFunction
+-- Args : [Arg {argCName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_font_desc_new" pango_attr_font_desc_new :: 
+    Ptr FontDescription ->                  -- desc : TInterface "Pango" "FontDescription"
+    IO (Ptr Attribute)
+
+
+attrFontDescNew ::
+    (MonadIO m) =>
+    FontDescription                         -- desc
+    -> m Attribute                          -- result
+attrFontDescNew desc = liftIO $ do
+    let desc' = unsafeManagedPtrGetPtr desc
+    result <- pango_attr_font_desc_new desc'
+    checkUnexpectedReturnNULL "pango_attr_font_desc_new" result
+    result' <- (wrapPtr Attribute) result
+    touchManagedPtr desc
+    return result'
 
 type family ResolveAttrFontDescMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttrFontDescMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/AttrFontDesc.hs-boot b/GI/Pango/Structs/AttrFontDesc.hs-boot
--- a/GI/Pango/Structs/AttrFontDesc.hs-boot
+++ b/GI/Pango/Structs/AttrFontDesc.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrFontDesc 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/Pango/Structs/AttrFontFeatures.hs b/GI/Pango/Structs/AttrFontFeatures.hs
--- a/GI/Pango/Structs/AttrFontFeatures.hs
+++ b/GI/Pango/Structs/AttrFontFeatures.hs
@@ -18,22 +18,35 @@
     noAttrFontFeatures                      ,
 
 
+ -- * Methods
+-- ** attrFontFeaturesNew
+    attrFontFeaturesNew                     ,
+
+
+
+
  -- * Properties
 -- ** Attr
+    attrFontFeaturesAttr                    ,
+    attrFontFeaturesClearAttr               ,
     attrFontFeaturesReadAttr                ,
+    attrFontFeaturesWriteAttr               ,
 
 
 -- ** Features
+    attrFontFeaturesClearFeatures           ,
+    attrFontFeaturesFeatures                ,
     attrFontFeaturesReadFeatures            ,
+    attrFontFeaturesWriteFeatures           ,
 
 
 
 
     ) 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
@@ -46,20 +59,108 @@
 newZeroAttrFontFeatures :: MonadIO m => m AttrFontFeatures
 newZeroAttrFontFeatures = liftIO $ callocBytes 24 >>= wrapPtr AttrFontFeatures
 
+instance tag ~ 'AttrSet => Constructible AttrFontFeatures tag where
+    new _ attrs = do
+        o <- newZeroAttrFontFeatures
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttrFontFeatures :: Maybe AttrFontFeatures
 noAttrFontFeatures = Nothing
 
-attrFontFeaturesReadAttr :: AttrFontFeatures -> IO Attribute
-attrFontFeaturesReadAttr s = withManagedPtr s $ \ptr -> do
+attrFontFeaturesReadAttr :: MonadIO m => AttrFontFeatures -> m (Maybe Attribute)
+attrFontFeaturesReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
-    val' <- (newPtr 16 Attribute) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Attribute) val'
+        return val''
+    return result
 
-attrFontFeaturesReadFeatures :: AttrFontFeatures -> IO T.Text
-attrFontFeaturesReadFeatures s = withManagedPtr s $ \ptr -> do
+attrFontFeaturesWriteAttr :: MonadIO m => AttrFontFeatures -> Ptr Attribute -> m ()
+attrFontFeaturesWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Attribute)
+
+attrFontFeaturesClearAttr :: MonadIO m => AttrFontFeatures -> m ()
+attrFontFeaturesClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)
+
+data AttrFontFeaturesAttrFieldInfo
+instance AttrInfo AttrFontFeaturesAttrFieldInfo where
+    type AttrAllowedOps AttrFontFeaturesAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrFontFeaturesAttrFieldInfo = (~) (Ptr Attribute)
+    type AttrBaseTypeConstraint AttrFontFeaturesAttrFieldInfo = (~) AttrFontFeatures
+    type AttrGetType AttrFontFeaturesAttrFieldInfo = Maybe Attribute
+    type AttrLabel AttrFontFeaturesAttrFieldInfo = "attr"
+    attrGet _ = attrFontFeaturesReadAttr
+    attrSet _ = attrFontFeaturesWriteAttr
+    attrConstruct = undefined
+    attrClear _ = attrFontFeaturesClearAttr
+
+attrFontFeaturesAttr :: AttrLabelProxy "attr"
+attrFontFeaturesAttr = AttrLabelProxy
+
+
+attrFontFeaturesReadFeatures :: MonadIO m => AttrFontFeatures -> m (Maybe T.Text)
+attrFontFeaturesReadFeatures s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
+
+attrFontFeaturesWriteFeatures :: MonadIO m => AttrFontFeatures -> CString -> m ()
+attrFontFeaturesWriteFeatures s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: CString)
+
+attrFontFeaturesClearFeatures :: MonadIO m => AttrFontFeatures -> m ()
+attrFontFeaturesClearFeatures s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: CString)
+
+data AttrFontFeaturesFeaturesFieldInfo
+instance AttrInfo AttrFontFeaturesFeaturesFieldInfo where
+    type AttrAllowedOps AttrFontFeaturesFeaturesFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrFontFeaturesFeaturesFieldInfo = (~) CString
+    type AttrBaseTypeConstraint AttrFontFeaturesFeaturesFieldInfo = (~) AttrFontFeatures
+    type AttrGetType AttrFontFeaturesFeaturesFieldInfo = Maybe T.Text
+    type AttrLabel AttrFontFeaturesFeaturesFieldInfo = "features"
+    attrGet _ = attrFontFeaturesReadFeatures
+    attrSet _ = attrFontFeaturesWriteFeatures
+    attrConstruct = undefined
+    attrClear _ = attrFontFeaturesClearFeatures
+
+attrFontFeaturesFeatures :: AttrLabelProxy "features"
+attrFontFeaturesFeatures = AttrLabelProxy
+
+
+
+type instance AttributeList AttrFontFeatures = AttrFontFeaturesAttributeList
+type AttrFontFeaturesAttributeList = ('[ '("attr", AttrFontFeaturesAttrFieldInfo), '("features", AttrFontFeaturesFeaturesFieldInfo)] :: [(Symbol, *)])
+
+-- method AttrFontFeatures::new
+-- method type : MemberFunction
+-- Args : [Arg {argCName = "features", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_font_features_new" pango_attr_font_features_new :: 
+    CString ->                              -- features : TBasicType TUTF8
+    IO (Ptr Attribute)
+
+
+attrFontFeaturesNew ::
+    (MonadIO m) =>
+    T.Text                                  -- features
+    -> m Attribute                          -- result
+attrFontFeaturesNew features = liftIO $ do
+    features' <- textToCString features
+    result <- pango_attr_font_features_new features'
+    checkUnexpectedReturnNULL "pango_attr_font_features_new" result
+    result' <- (wrapPtr Attribute) result
+    freeMem features'
+    return result'
 
 type family ResolveAttrFontFeaturesMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttrFontFeaturesMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/AttrFontFeatures.hs-boot b/GI/Pango/Structs/AttrFontFeatures.hs-boot
--- a/GI/Pango/Structs/AttrFontFeatures.hs-boot
+++ b/GI/Pango/Structs/AttrFontFeatures.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrFontFeatures 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/Pango/Structs/AttrInt.hs b/GI/Pango/Structs/AttrInt.hs
--- a/GI/Pango/Structs/AttrInt.hs
+++ b/GI/Pango/Structs/AttrInt.hs
@@ -20,20 +20,25 @@
 
  -- * Properties
 -- ** Attr
+    attrIntAttr                             ,
+    attrIntClearAttr                        ,
     attrIntReadAttr                         ,
+    attrIntWriteAttr                        ,
 
 
 -- ** Value
     attrIntReadValue                        ,
+    attrIntValue                            ,
+    attrIntWriteValue                       ,
 
 
 
 
     ) 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
@@ -46,19 +51,76 @@
 newZeroAttrInt :: MonadIO m => m AttrInt
 newZeroAttrInt = liftIO $ callocBytes 24 >>= wrapPtr AttrInt
 
+instance tag ~ 'AttrSet => Constructible AttrInt tag where
+    new _ attrs = do
+        o <- newZeroAttrInt
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttrInt :: Maybe AttrInt
 noAttrInt = Nothing
 
-attrIntReadAttr :: AttrInt -> IO Attribute
-attrIntReadAttr s = withManagedPtr s $ \ptr -> do
+attrIntReadAttr :: MonadIO m => AttrInt -> m (Maybe Attribute)
+attrIntReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
-    val' <- (newPtr 16 Attribute) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Attribute) val'
+        return val''
+    return result
 
-attrIntReadValue :: AttrInt -> IO Int32
-attrIntReadValue s = withManagedPtr s $ \ptr -> do
+attrIntWriteAttr :: MonadIO m => AttrInt -> Ptr Attribute -> m ()
+attrIntWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Attribute)
+
+attrIntClearAttr :: MonadIO m => AttrInt -> m ()
+attrIntClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)
+
+data AttrIntAttrFieldInfo
+instance AttrInfo AttrIntAttrFieldInfo where
+    type AttrAllowedOps AttrIntAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrIntAttrFieldInfo = (~) (Ptr Attribute)
+    type AttrBaseTypeConstraint AttrIntAttrFieldInfo = (~) AttrInt
+    type AttrGetType AttrIntAttrFieldInfo = Maybe Attribute
+    type AttrLabel AttrIntAttrFieldInfo = "attr"
+    attrGet _ = attrIntReadAttr
+    attrSet _ = attrIntWriteAttr
+    attrConstruct = undefined
+    attrClear _ = attrIntClearAttr
+
+attrIntAttr :: AttrLabelProxy "attr"
+attrIntAttr = AttrLabelProxy
+
+
+attrIntReadValue :: MonadIO m => AttrInt -> m Int32
+attrIntReadValue s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int32
     return val
+
+attrIntWriteValue :: MonadIO m => AttrInt -> Int32 -> m ()
+attrIntWriteValue s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int32)
+
+data AttrIntValueFieldInfo
+instance AttrInfo AttrIntValueFieldInfo where
+    type AttrAllowedOps AttrIntValueFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AttrIntValueFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint AttrIntValueFieldInfo = (~) AttrInt
+    type AttrGetType AttrIntValueFieldInfo = Int32
+    type AttrLabel AttrIntValueFieldInfo = "value"
+    attrGet _ = attrIntReadValue
+    attrSet _ = attrIntWriteValue
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+attrIntValue :: AttrLabelProxy "value"
+attrIntValue = AttrLabelProxy
+
+
+
+type instance AttributeList AttrInt = AttrIntAttributeList
+type AttrIntAttributeList = ('[ '("attr", AttrIntAttrFieldInfo), '("value", AttrIntValueFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveAttrIntMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttrIntMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/AttrInt.hs-boot b/GI/Pango/Structs/AttrInt.hs-boot
--- a/GI/Pango/Structs/AttrInt.hs-boot
+++ b/GI/Pango/Structs/AttrInt.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrInt 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/Pango/Structs/AttrIterator.hs b/GI/Pango/Structs/AttrIterator.hs
--- a/GI/Pango/Structs/AttrIterator.hs
+++ b/GI/Pango/Structs/AttrIterator.hs
@@ -52,9 +52,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
@@ -66,11 +66,15 @@
 noAttrIterator :: Maybe AttrIterator
 noAttrIterator = Nothing
 
+
+type instance AttributeList AttrIterator = AttrIteratorAttributeList
+type AttrIteratorAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method AttrIterator::destroy
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrIterator", 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
 
@@ -97,7 +101,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGSList (TInterface "Pango" "Attribute")
+-- returnType : Just (TGSList (TInterface "Pango" "Attribute"))
 -- throws : False
 -- Skip return : False
 
@@ -113,7 +117,6 @@
 attrIteratorGetAttrs _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_attr_iterator_get_attrs _obj'
-    checkUnexpectedReturnNULL "pango_attr_iterator_get_attrs" result
     result' <- unpackGSList result
     result'' <- mapM (wrapPtr Attribute) result'
     g_slist_free result
@@ -128,7 +131,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "extra_attrs", argType = TGSList (TInterface "Pango" "Attribute"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -172,7 +175,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrIterator", 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
 
@@ -198,16 +201,16 @@
 
 -- method AttrIterator::range
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "end", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "end", 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 "pango_attr_iterator_range" pango_attr_iterator_range :: 
     Ptr AttrIterator ->                     -- _obj : TInterface "Pango" "AttrIterator"
-    Ptr Int32 ->                            -- start : TBasicType TInt32
-    Ptr Int32 ->                            -- end : TBasicType TInt32
+    Ptr Int32 ->                            -- start : TBasicType TInt
+    Ptr Int32 ->                            -- end : TBasicType TInt
     IO ()
 
 
diff --git a/GI/Pango/Structs/AttrIterator.hs-boot b/GI/Pango/Structs/AttrIterator.hs-boot
--- a/GI/Pango/Structs/AttrIterator.hs-boot
+++ b/GI/Pango/Structs/AttrIterator.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrIterator 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/Pango/Structs/AttrLanguage.hs b/GI/Pango/Structs/AttrLanguage.hs
--- a/GI/Pango/Structs/AttrLanguage.hs
+++ b/GI/Pango/Structs/AttrLanguage.hs
@@ -18,22 +18,35 @@
     noAttrLanguage                          ,
 
 
+ -- * Methods
+-- ** attrLanguageNew
+    attrLanguageNew                         ,
+
+
+
+
  -- * Properties
 -- ** Attr
+    attrLanguageAttr                        ,
+    attrLanguageClearAttr                   ,
     attrLanguageReadAttr                    ,
+    attrLanguageWriteAttr                   ,
 
 
 -- ** Value
+    attrLanguageClearValue                  ,
     attrLanguageReadValue                   ,
+    attrLanguageValue                       ,
+    attrLanguageWriteValue                  ,
 
 
 
 
     ) 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
@@ -46,20 +59,108 @@
 newZeroAttrLanguage :: MonadIO m => m AttrLanguage
 newZeroAttrLanguage = liftIO $ callocBytes 24 >>= wrapPtr AttrLanguage
 
+instance tag ~ 'AttrSet => Constructible AttrLanguage tag where
+    new _ attrs = do
+        o <- newZeroAttrLanguage
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttrLanguage :: Maybe AttrLanguage
 noAttrLanguage = Nothing
 
-attrLanguageReadAttr :: AttrLanguage -> IO Attribute
-attrLanguageReadAttr s = withManagedPtr s $ \ptr -> do
+attrLanguageReadAttr :: MonadIO m => AttrLanguage -> m (Maybe Attribute)
+attrLanguageReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
-    val' <- (newPtr 16 Attribute) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Attribute) val'
+        return val''
+    return result
 
-attrLanguageReadValue :: AttrLanguage -> IO Language
-attrLanguageReadValue s = withManagedPtr s $ \ptr -> do
+attrLanguageWriteAttr :: MonadIO m => AttrLanguage -> Ptr Attribute -> m ()
+attrLanguageWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Attribute)
+
+attrLanguageClearAttr :: MonadIO m => AttrLanguage -> m ()
+attrLanguageClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)
+
+data AttrLanguageAttrFieldInfo
+instance AttrInfo AttrLanguageAttrFieldInfo where
+    type AttrAllowedOps AttrLanguageAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrLanguageAttrFieldInfo = (~) (Ptr Attribute)
+    type AttrBaseTypeConstraint AttrLanguageAttrFieldInfo = (~) AttrLanguage
+    type AttrGetType AttrLanguageAttrFieldInfo = Maybe Attribute
+    type AttrLabel AttrLanguageAttrFieldInfo = "attr"
+    attrGet _ = attrLanguageReadAttr
+    attrSet _ = attrLanguageWriteAttr
+    attrConstruct = undefined
+    attrClear _ = attrLanguageClearAttr
+
+attrLanguageAttr :: AttrLabelProxy "attr"
+attrLanguageAttr = AttrLabelProxy
+
+
+attrLanguageReadValue :: MonadIO m => AttrLanguage -> m (Maybe Language)
+attrLanguageReadValue s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr Language)
-    val' <- (newBoxed Language) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newBoxed Language) val'
+        return val''
+    return result
+
+attrLanguageWriteValue :: MonadIO m => AttrLanguage -> Ptr Language -> m ()
+attrLanguageWriteValue s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Ptr Language)
+
+attrLanguageClearValue :: MonadIO m => AttrLanguage -> m ()
+attrLanguageClearValue s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: Ptr Language)
+
+data AttrLanguageValueFieldInfo
+instance AttrInfo AttrLanguageValueFieldInfo where
+    type AttrAllowedOps AttrLanguageValueFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrLanguageValueFieldInfo = (~) (Ptr Language)
+    type AttrBaseTypeConstraint AttrLanguageValueFieldInfo = (~) AttrLanguage
+    type AttrGetType AttrLanguageValueFieldInfo = Maybe Language
+    type AttrLabel AttrLanguageValueFieldInfo = "value"
+    attrGet _ = attrLanguageReadValue
+    attrSet _ = attrLanguageWriteValue
+    attrConstruct = undefined
+    attrClear _ = attrLanguageClearValue
+
+attrLanguageValue :: AttrLabelProxy "value"
+attrLanguageValue = AttrLabelProxy
+
+
+
+type instance AttributeList AttrLanguage = AttrLanguageAttributeList
+type AttrLanguageAttributeList = ('[ '("attr", AttrLanguageAttrFieldInfo), '("value", AttrLanguageValueFieldInfo)] :: [(Symbol, *)])
+
+-- method AttrLanguage::new
+-- method type : MemberFunction
+-- Args : [Arg {argCName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_language_new" pango_attr_language_new :: 
+    Ptr Language ->                         -- language : TInterface "Pango" "Language"
+    IO (Ptr Attribute)
+
+
+attrLanguageNew ::
+    (MonadIO m) =>
+    Language                                -- language
+    -> m Attribute                          -- result
+attrLanguageNew language = liftIO $ do
+    let language' = unsafeManagedPtrGetPtr language
+    result <- pango_attr_language_new language'
+    checkUnexpectedReturnNULL "pango_attr_language_new" result
+    result' <- (wrapPtr Attribute) result
+    touchManagedPtr language
+    return result'
 
 type family ResolveAttrLanguageMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttrLanguageMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/AttrLanguage.hs-boot b/GI/Pango/Structs/AttrLanguage.hs-boot
--- a/GI/Pango/Structs/AttrLanguage.hs-boot
+++ b/GI/Pango/Structs/AttrLanguage.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrLanguage 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/Pango/Structs/AttrList.hs b/GI/Pango/Structs/AttrList.hs
--- a/GI/Pango/Structs/AttrList.hs
+++ b/GI/Pango/Structs/AttrList.hs
@@ -74,9 +74,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
@@ -94,11 +94,15 @@
 noAttrList :: Maybe AttrList
 noAttrList = Nothing
 
+
+type instance AttributeList AttrList = AttrListAttributeList
+type AttrListAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method AttrList::new
 -- method type : Constructor
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Pango" "AttrList"
+-- returnType : Just (TInterface "Pango" "AttrList")
 -- throws : False
 -- Skip return : False
 
@@ -119,7 +123,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -150,7 +154,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "AttrList"
+-- returnType : Just (TInterface "Pango" "AttrList")
 -- throws : False
 -- Skip return : False
 
@@ -162,31 +166,32 @@
 attrListCopy ::
     (MonadIO m) =>
     AttrList                                -- _obj
-    -> m AttrList                           -- result
+    -> m (Maybe AttrList)                   -- result
 attrListCopy _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_attr_list_copy _obj'
-    checkUnexpectedReturnNULL "pango_attr_list_copy" result
-    result' <- (wrapBoxed AttrList) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed AttrList) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data AttrListCopyMethodInfo
-instance (signature ~ (m AttrList), MonadIO m) => MethodInfo AttrListCopyMethodInfo AttrList signature where
+instance (signature ~ (m (Maybe AttrList)), MonadIO m) => MethodInfo AttrListCopyMethodInfo AttrList signature where
     overloadedMethod _ = attrListCopy
 
 -- method AttrList::filter
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface "Pango" "AttrFilterFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface "Pango" "AttrFilterFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "AttrList"
+-- returnType : Just (TInterface "Pango" "AttrList")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_attr_list_filter" pango_attr_list_filter :: 
     Ptr AttrList ->                         -- _obj : TInterface "Pango" "AttrList"
     FunPtr AttrFilterFuncC ->               -- func : TInterface "Pango" "AttrFilterFunc"
-    Ptr () ->                               -- data : TBasicType TVoid
+    Ptr () ->                               -- data : TBasicType TPtr
     IO (Ptr AttrList)
 
 
@@ -194,27 +199,28 @@
     (MonadIO m) =>
     AttrList                                -- _obj
     -> AttrFilterFunc                       -- func
-    -> m AttrList                           -- result
+    -> m (Maybe AttrList)                   -- result
 attrListFilter _obj func = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     func' <- mkAttrFilterFunc (attrFilterFuncWrapper Nothing func)
     let data_ = nullPtr
     result <- pango_attr_list_filter _obj' func' data_
-    checkUnexpectedReturnNULL "pango_attr_list_filter" result
-    result' <- (wrapBoxed AttrList) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed AttrList) result'
+        return result''
     safeFreeFunPtr $ castFunPtrToPtr func'
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data AttrListFilterMethodInfo
-instance (signature ~ (AttrFilterFunc -> m AttrList), MonadIO m) => MethodInfo AttrListFilterMethodInfo AttrList signature where
+instance (signature ~ (AttrFilterFunc -> m (Maybe AttrList)), MonadIO m) => MethodInfo AttrListFilterMethodInfo AttrList signature where
     overloadedMethod _ = attrListFilter
 
 -- method AttrList::insert
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -245,7 +251,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
@@ -276,7 +282,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "AttrList"
+-- returnType : Just (TInterface "Pango" "AttrList")
 -- throws : False
 -- Skip return : False
 
@@ -303,17 +309,17 @@
 
 -- method AttrList::splice
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "other", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pos", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "other", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pos", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "len", 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 "pango_attr_list_splice" pango_attr_list_splice :: 
     Ptr AttrList ->                         -- _obj : TInterface "Pango" "AttrList"
     Ptr AttrList ->                         -- other : TInterface "Pango" "AttrList"
-    Int32 ->                                -- pos : TBasicType TInt32
-    Int32 ->                                -- len : TBasicType TInt32
+    Int32 ->                                -- pos : TBasicType TInt
+    Int32 ->                                -- len : TBasicType TInt
     IO ()
 
 
@@ -340,7 +346,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "AttrList", 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/Pango/Structs/AttrList.hs-boot b/GI/Pango/Structs/AttrList.hs-boot
--- a/GI/Pango/Structs/AttrList.hs-boot
+++ b/GI/Pango/Structs/AttrList.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrList 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/Pango/Structs/AttrShape.hs b/GI/Pango/Structs/AttrShape.hs
--- a/GI/Pango/Structs/AttrShape.hs
+++ b/GI/Pango/Structs/AttrShape.hs
@@ -18,30 +18,49 @@
     noAttrShape                             ,
 
 
+ -- * Methods
+-- ** attrShapeNew
+    attrShapeNew                            ,
+
+
+
+
  -- * Properties
 -- ** Attr
+    attrShapeAttr                           ,
+    attrShapeClearAttr                      ,
     attrShapeReadAttr                       ,
+    attrShapeWriteAttr                      ,
 
 
 -- ** Data
+    attrShapeClearData                      ,
+    attrShapeData                           ,
     attrShapeReadData                       ,
+    attrShapeWriteData                      ,
 
 
 -- ** InkRect
+    attrShapeClearInkRect                   ,
+    attrShapeInkRect                        ,
     attrShapeReadInkRect                    ,
+    attrShapeWriteInkRect                   ,
 
 
 -- ** LogicalRect
+    attrShapeClearLogicalRect               ,
+    attrShapeLogicalRect                    ,
     attrShapeReadLogicalRect                ,
+    attrShapeWriteLogicalRect               ,
 
 
 
 
     ) 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
@@ -54,33 +73,174 @@
 newZeroAttrShape :: MonadIO m => m AttrShape
 newZeroAttrShape = liftIO $ callocBytes 72 >>= wrapPtr AttrShape
 
+instance tag ~ 'AttrSet => Constructible AttrShape tag where
+    new _ attrs = do
+        o <- newZeroAttrShape
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttrShape :: Maybe AttrShape
 noAttrShape = Nothing
 
-attrShapeReadAttr :: AttrShape -> IO Attribute
-attrShapeReadAttr s = withManagedPtr s $ \ptr -> do
+attrShapeReadAttr :: MonadIO m => AttrShape -> m (Maybe Attribute)
+attrShapeReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
-    val' <- (newPtr 16 Attribute) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Attribute) val'
+        return val''
+    return result
 
-attrShapeReadInkRect :: AttrShape -> IO Rectangle
-attrShapeReadInkRect s = withManagedPtr s $ \ptr -> do
+attrShapeWriteAttr :: MonadIO m => AttrShape -> Ptr Attribute -> m ()
+attrShapeWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Attribute)
+
+attrShapeClearAttr :: MonadIO m => AttrShape -> m ()
+attrShapeClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)
+
+data AttrShapeAttrFieldInfo
+instance AttrInfo AttrShapeAttrFieldInfo where
+    type AttrAllowedOps AttrShapeAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrShapeAttrFieldInfo = (~) (Ptr Attribute)
+    type AttrBaseTypeConstraint AttrShapeAttrFieldInfo = (~) AttrShape
+    type AttrGetType AttrShapeAttrFieldInfo = Maybe Attribute
+    type AttrLabel AttrShapeAttrFieldInfo = "attr"
+    attrGet _ = attrShapeReadAttr
+    attrSet _ = attrShapeWriteAttr
+    attrConstruct = undefined
+    attrClear _ = attrShapeClearAttr
+
+attrShapeAttr :: AttrLabelProxy "attr"
+attrShapeAttr = AttrLabelProxy
+
+
+attrShapeReadInkRect :: MonadIO m => AttrShape -> m (Maybe Rectangle)
+attrShapeReadInkRect s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr Rectangle)
-    val' <- (newPtr 16 Rectangle) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Rectangle) val'
+        return val''
+    return result
 
-attrShapeReadLogicalRect :: AttrShape -> IO Rectangle
-attrShapeReadLogicalRect s = withManagedPtr s $ \ptr -> do
+attrShapeWriteInkRect :: MonadIO m => AttrShape -> Ptr Rectangle -> m ()
+attrShapeWriteInkRect s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Ptr Rectangle)
+
+attrShapeClearInkRect :: MonadIO m => AttrShape -> m ()
+attrShapeClearInkRect s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: Ptr Rectangle)
+
+data AttrShapeInkRectFieldInfo
+instance AttrInfo AttrShapeInkRectFieldInfo where
+    type AttrAllowedOps AttrShapeInkRectFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrShapeInkRectFieldInfo = (~) (Ptr Rectangle)
+    type AttrBaseTypeConstraint AttrShapeInkRectFieldInfo = (~) AttrShape
+    type AttrGetType AttrShapeInkRectFieldInfo = Maybe Rectangle
+    type AttrLabel AttrShapeInkRectFieldInfo = "ink_rect"
+    attrGet _ = attrShapeReadInkRect
+    attrSet _ = attrShapeWriteInkRect
+    attrConstruct = undefined
+    attrClear _ = attrShapeClearInkRect
+
+attrShapeInkRect :: AttrLabelProxy "inkRect"
+attrShapeInkRect = AttrLabelProxy
+
+
+attrShapeReadLogicalRect :: MonadIO m => AttrShape -> m (Maybe Rectangle)
+attrShapeReadLogicalRect s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO (Ptr Rectangle)
-    val' <- (newPtr 16 Rectangle) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Rectangle) val'
+        return val''
+    return result
 
-attrShapeReadData :: AttrShape -> IO (Ptr ())
-attrShapeReadData s = withManagedPtr s $ \ptr -> do
+attrShapeWriteLogicalRect :: MonadIO m => AttrShape -> Ptr Rectangle -> m ()
+attrShapeWriteLogicalRect s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Ptr Rectangle)
+
+attrShapeClearLogicalRect :: MonadIO m => AttrShape -> m ()
+attrShapeClearLogicalRect s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (nullPtr :: Ptr Rectangle)
+
+data AttrShapeLogicalRectFieldInfo
+instance AttrInfo AttrShapeLogicalRectFieldInfo where
+    type AttrAllowedOps AttrShapeLogicalRectFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrShapeLogicalRectFieldInfo = (~) (Ptr Rectangle)
+    type AttrBaseTypeConstraint AttrShapeLogicalRectFieldInfo = (~) AttrShape
+    type AttrGetType AttrShapeLogicalRectFieldInfo = Maybe Rectangle
+    type AttrLabel AttrShapeLogicalRectFieldInfo = "logical_rect"
+    attrGet _ = attrShapeReadLogicalRect
+    attrSet _ = attrShapeWriteLogicalRect
+    attrConstruct = undefined
+    attrClear _ = attrShapeClearLogicalRect
+
+attrShapeLogicalRect :: AttrLabelProxy "logicalRect"
+attrShapeLogicalRect = AttrLabelProxy
+
+
+attrShapeReadData :: MonadIO m => AttrShape -> m (Ptr ())
+attrShapeReadData s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO (Ptr ())
     return val
 
--- XXX Skipped getter for "AttrShape:destroy_func" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+attrShapeWriteData :: MonadIO m => AttrShape -> Ptr () -> m ()
+attrShapeWriteData s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (val :: Ptr ())
+
+attrShapeClearData :: MonadIO m => AttrShape -> m ()
+attrShapeClearData s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (nullPtr :: Ptr ())
+
+data AttrShapeDataFieldInfo
+instance AttrInfo AttrShapeDataFieldInfo where
+    type AttrAllowedOps AttrShapeDataFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrShapeDataFieldInfo = (~) (Ptr ())
+    type AttrBaseTypeConstraint AttrShapeDataFieldInfo = (~) AttrShape
+    type AttrGetType AttrShapeDataFieldInfo = Ptr ()
+    type AttrLabel AttrShapeDataFieldInfo = "data"
+    attrGet _ = attrShapeReadData
+    attrSet _ = attrShapeWriteData
+    attrConstruct = undefined
+    attrClear _ = attrShapeClearData
+
+attrShapeData :: AttrLabelProxy "data"
+attrShapeData = AttrLabelProxy
+
+
+-- XXX Skipped attribute for "AttrShape:destroy_func" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+
+type instance AttributeList AttrShape = AttrShapeAttributeList
+type AttrShapeAttributeList = ('[ '("attr", AttrShapeAttrFieldInfo), '("inkRect", AttrShapeInkRectFieldInfo), '("logicalRect", AttrShapeLogicalRectFieldInfo), '("data", AttrShapeDataFieldInfo)] :: [(Symbol, *)])
+
+-- method AttrShape::new
+-- method type : MemberFunction
+-- Args : [Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_shape_new" pango_attr_shape_new :: 
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO (Ptr Attribute)
+
+
+attrShapeNew ::
+    (MonadIO m) =>
+    Rectangle                               -- inkRect
+    -> Rectangle                            -- logicalRect
+    -> m Attribute                          -- result
+attrShapeNew inkRect logicalRect = liftIO $ do
+    let inkRect' = unsafeManagedPtrGetPtr inkRect
+    let logicalRect' = unsafeManagedPtrGetPtr logicalRect
+    result <- pango_attr_shape_new inkRect' logicalRect'
+    checkUnexpectedReturnNULL "pango_attr_shape_new" result
+    result' <- (wrapPtr Attribute) result
+    touchManagedPtr inkRect
+    touchManagedPtr logicalRect
+    return result'
 
 type family ResolveAttrShapeMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttrShapeMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/AttrShape.hs-boot b/GI/Pango/Structs/AttrShape.hs-boot
--- a/GI/Pango/Structs/AttrShape.hs-boot
+++ b/GI/Pango/Structs/AttrShape.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrShape 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/Pango/Structs/AttrSize.hs b/GI/Pango/Structs/AttrSize.hs
--- a/GI/Pango/Structs/AttrSize.hs
+++ b/GI/Pango/Structs/AttrSize.hs
@@ -18,26 +18,40 @@
     noAttrSize                              ,
 
 
+ -- * Methods
+-- ** attrSizeNew
+    attrSizeNew                             ,
+
+
+
+
  -- * Properties
 -- ** Absolute
+    attrSizeAbsolute                        ,
     attrSizeReadAbsolute                    ,
+    attrSizeWriteAbsolute                   ,
 
 
 -- ** Attr
+    attrSizeAttr                            ,
+    attrSizeClearAttr                       ,
     attrSizeReadAttr                        ,
+    attrSizeWriteAttr                       ,
 
 
 -- ** Size
     attrSizeReadSize                        ,
+    attrSizeSize                            ,
+    attrSizeWriteSize                       ,
 
 
 
 
     ) 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
@@ -50,24 +64,124 @@
 newZeroAttrSize :: MonadIO m => m AttrSize
 newZeroAttrSize = liftIO $ callocBytes 24 >>= wrapPtr AttrSize
 
+instance tag ~ 'AttrSet => Constructible AttrSize tag where
+    new _ attrs = do
+        o <- newZeroAttrSize
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttrSize :: Maybe AttrSize
 noAttrSize = Nothing
 
-attrSizeReadAttr :: AttrSize -> IO Attribute
-attrSizeReadAttr s = withManagedPtr s $ \ptr -> do
+attrSizeReadAttr :: MonadIO m => AttrSize -> m (Maybe Attribute)
+attrSizeReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
-    val' <- (newPtr 16 Attribute) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Attribute) val'
+        return val''
+    return result
 
-attrSizeReadSize :: AttrSize -> IO Int32
-attrSizeReadSize s = withManagedPtr s $ \ptr -> do
+attrSizeWriteAttr :: MonadIO m => AttrSize -> Ptr Attribute -> m ()
+attrSizeWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Attribute)
+
+attrSizeClearAttr :: MonadIO m => AttrSize -> m ()
+attrSizeClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)
+
+data AttrSizeAttrFieldInfo
+instance AttrInfo AttrSizeAttrFieldInfo where
+    type AttrAllowedOps AttrSizeAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrSizeAttrFieldInfo = (~) (Ptr Attribute)
+    type AttrBaseTypeConstraint AttrSizeAttrFieldInfo = (~) AttrSize
+    type AttrGetType AttrSizeAttrFieldInfo = Maybe Attribute
+    type AttrLabel AttrSizeAttrFieldInfo = "attr"
+    attrGet _ = attrSizeReadAttr
+    attrSet _ = attrSizeWriteAttr
+    attrConstruct = undefined
+    attrClear _ = attrSizeClearAttr
+
+attrSizeAttr :: AttrLabelProxy "attr"
+attrSizeAttr = AttrLabelProxy
+
+
+attrSizeReadSize :: MonadIO m => AttrSize -> m Int32
+attrSizeReadSize s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int32
     return val
 
-attrSizeReadAbsolute :: AttrSize -> IO Word32
-attrSizeReadAbsolute s = withManagedPtr s $ \ptr -> do
+attrSizeWriteSize :: MonadIO m => AttrSize -> Int32 -> m ()
+attrSizeWriteSize s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int32)
+
+data AttrSizeSizeFieldInfo
+instance AttrInfo AttrSizeSizeFieldInfo where
+    type AttrAllowedOps AttrSizeSizeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AttrSizeSizeFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint AttrSizeSizeFieldInfo = (~) AttrSize
+    type AttrGetType AttrSizeSizeFieldInfo = Int32
+    type AttrLabel AttrSizeSizeFieldInfo = "size"
+    attrGet _ = attrSizeReadSize
+    attrSet _ = attrSizeWriteSize
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+attrSizeSize :: AttrLabelProxy "size"
+attrSizeSize = AttrLabelProxy
+
+
+attrSizeReadAbsolute :: MonadIO m => AttrSize -> m Word32
+attrSizeReadAbsolute s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Word32
     return val
+
+attrSizeWriteAbsolute :: MonadIO m => AttrSize -> Word32 -> m ()
+attrSizeWriteAbsolute s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Word32)
+
+data AttrSizeAbsoluteFieldInfo
+instance AttrInfo AttrSizeAbsoluteFieldInfo where
+    type AttrAllowedOps AttrSizeAbsoluteFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AttrSizeAbsoluteFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint AttrSizeAbsoluteFieldInfo = (~) AttrSize
+    type AttrGetType AttrSizeAbsoluteFieldInfo = Word32
+    type AttrLabel AttrSizeAbsoluteFieldInfo = "absolute"
+    attrGet _ = attrSizeReadAbsolute
+    attrSet _ = attrSizeWriteAbsolute
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+attrSizeAbsolute :: AttrLabelProxy "absolute"
+attrSizeAbsolute = AttrLabelProxy
+
+
+
+type instance AttributeList AttrSize = AttrSizeAttributeList
+type AttrSizeAttributeList = ('[ '("attr", AttrSizeAttrFieldInfo), '("size", AttrSizeSizeFieldInfo), '("absolute", AttrSizeAbsoluteFieldInfo)] :: [(Symbol, *)])
+
+-- method AttrSize::new
+-- method type : MemberFunction
+-- Args : [Arg {argCName = "size", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Lengths : []
+-- returnType : Just (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_size_new" pango_attr_size_new :: 
+    Int32 ->                                -- size : TBasicType TInt
+    IO (Ptr Attribute)
+
+
+attrSizeNew ::
+    (MonadIO m) =>
+    Int32                                   -- size
+    -> m Attribute                          -- result
+attrSizeNew size = liftIO $ do
+    result <- pango_attr_size_new size
+    checkUnexpectedReturnNULL "pango_attr_size_new" result
+    result' <- (wrapPtr Attribute) result
+    return result'
 
 type family ResolveAttrSizeMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttrSizeMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/AttrSize.hs-boot b/GI/Pango/Structs/AttrSize.hs-boot
--- a/GI/Pango/Structs/AttrSize.hs-boot
+++ b/GI/Pango/Structs/AttrSize.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrSize 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/Pango/Structs/AttrString.hs b/GI/Pango/Structs/AttrString.hs
--- a/GI/Pango/Structs/AttrString.hs
+++ b/GI/Pango/Structs/AttrString.hs
@@ -20,20 +20,26 @@
 
  -- * Properties
 -- ** Attr
+    attrStringAttr                          ,
+    attrStringClearAttr                     ,
     attrStringReadAttr                      ,
+    attrStringWriteAttr                     ,
 
 
 -- ** Value
+    attrStringClearValue                    ,
     attrStringReadValue                     ,
+    attrStringValue                         ,
+    attrStringWriteValue                    ,
 
 
 
 
     ) 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
@@ -46,20 +52,83 @@
 newZeroAttrString :: MonadIO m => m AttrString
 newZeroAttrString = liftIO $ callocBytes 24 >>= wrapPtr AttrString
 
+instance tag ~ 'AttrSet => Constructible AttrString tag where
+    new _ attrs = do
+        o <- newZeroAttrString
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttrString :: Maybe AttrString
 noAttrString = Nothing
 
-attrStringReadAttr :: AttrString -> IO Attribute
-attrStringReadAttr s = withManagedPtr s $ \ptr -> do
+attrStringReadAttr :: MonadIO m => AttrString -> m (Maybe Attribute)
+attrStringReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
-    val' <- (newPtr 16 Attribute) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 Attribute) val'
+        return val''
+    return result
 
-attrStringReadValue :: AttrString -> IO T.Text
-attrStringReadValue s = withManagedPtr s $ \ptr -> do
+attrStringWriteAttr :: MonadIO m => AttrString -> Ptr Attribute -> m ()
+attrStringWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Attribute)
+
+attrStringClearAttr :: MonadIO m => AttrString -> m ()
+attrStringClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)
+
+data AttrStringAttrFieldInfo
+instance AttrInfo AttrStringAttrFieldInfo where
+    type AttrAllowedOps AttrStringAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrStringAttrFieldInfo = (~) (Ptr Attribute)
+    type AttrBaseTypeConstraint AttrStringAttrFieldInfo = (~) AttrString
+    type AttrGetType AttrStringAttrFieldInfo = Maybe Attribute
+    type AttrLabel AttrStringAttrFieldInfo = "attr"
+    attrGet _ = attrStringReadAttr
+    attrSet _ = attrStringWriteAttr
+    attrConstruct = undefined
+    attrClear _ = attrStringClearAttr
+
+attrStringAttr :: AttrLabelProxy "attr"
+attrStringAttr = AttrLabelProxy
+
+
+attrStringReadValue :: MonadIO m => AttrString -> m (Maybe T.Text)
+attrStringReadValue s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
+
+attrStringWriteValue :: MonadIO m => AttrString -> CString -> m ()
+attrStringWriteValue s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: CString)
+
+attrStringClearValue :: MonadIO m => AttrString -> m ()
+attrStringClearValue s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: CString)
+
+data AttrStringValueFieldInfo
+instance AttrInfo AttrStringValueFieldInfo where
+    type AttrAllowedOps AttrStringValueFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttrStringValueFieldInfo = (~) CString
+    type AttrBaseTypeConstraint AttrStringValueFieldInfo = (~) AttrString
+    type AttrGetType AttrStringValueFieldInfo = Maybe T.Text
+    type AttrLabel AttrStringValueFieldInfo = "value"
+    attrGet _ = attrStringReadValue
+    attrSet _ = attrStringWriteValue
+    attrConstruct = undefined
+    attrClear _ = attrStringClearValue
+
+attrStringValue :: AttrLabelProxy "value"
+attrStringValue = AttrLabelProxy
+
+
+
+type instance AttributeList AttrString = AttrStringAttributeList
+type AttrStringAttributeList = ('[ '("attr", AttrStringAttrFieldInfo), '("value", AttrStringValueFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveAttrStringMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttrStringMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/AttrString.hs-boot b/GI/Pango/Structs/AttrString.hs-boot
--- a/GI/Pango/Structs/AttrString.hs-boot
+++ b/GI/Pango/Structs/AttrString.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.AttrString 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/Pango/Structs/Attribute.hs b/GI/Pango/Structs/Attribute.hs
--- a/GI/Pango/Structs/Attribute.hs
+++ b/GI/Pango/Structs/Attribute.hs
@@ -42,24 +42,31 @@
 
  -- * Properties
 -- ** EndIndex
+    attributeEndIndex                       ,
     attributeReadEndIndex                   ,
+    attributeWriteEndIndex                  ,
 
 
 -- ** Klass
+    attributeClearKlass                     ,
+    attributeKlass                          ,
     attributeReadKlass                      ,
+    attributeWriteKlass                     ,
 
 
 -- ** StartIndex
     attributeReadStartIndex                 ,
+    attributeStartIndex                     ,
+    attributeWriteStartIndex                ,
 
 
 
 
     ) 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
@@ -72,30 +79,107 @@
 newZeroAttribute :: MonadIO m => m Attribute
 newZeroAttribute = liftIO $ callocBytes 16 >>= wrapPtr Attribute
 
+instance tag ~ 'AttrSet => Constructible Attribute tag where
+    new _ attrs = do
+        o <- newZeroAttribute
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttribute :: Maybe Attribute
 noAttribute = Nothing
 
-attributeReadKlass :: Attribute -> IO AttrClass
-attributeReadKlass s = withManagedPtr s $ \ptr -> do
+attributeReadKlass :: MonadIO m => Attribute -> m (Maybe AttrClass)
+attributeReadKlass s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr AttrClass)
-    val' <- (newPtr 32 AttrClass) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 32 AttrClass) val'
+        return val''
+    return result
 
-attributeReadStartIndex :: Attribute -> IO Word32
-attributeReadStartIndex s = withManagedPtr s $ \ptr -> do
+attributeWriteKlass :: MonadIO m => Attribute -> Ptr AttrClass -> m ()
+attributeWriteKlass s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr AttrClass)
+
+attributeClearKlass :: MonadIO m => Attribute -> m ()
+attributeClearKlass s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr AttrClass)
+
+data AttributeKlassFieldInfo
+instance AttrInfo AttributeKlassFieldInfo where
+    type AttrAllowedOps AttributeKlassFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint AttributeKlassFieldInfo = (~) (Ptr AttrClass)
+    type AttrBaseTypeConstraint AttributeKlassFieldInfo = (~) Attribute
+    type AttrGetType AttributeKlassFieldInfo = Maybe AttrClass
+    type AttrLabel AttributeKlassFieldInfo = "klass"
+    attrGet _ = attributeReadKlass
+    attrSet _ = attributeWriteKlass
+    attrConstruct = undefined
+    attrClear _ = attributeClearKlass
+
+attributeKlass :: AttrLabelProxy "klass"
+attributeKlass = AttrLabelProxy
+
+
+attributeReadStartIndex :: MonadIO m => Attribute -> m Word32
+attributeReadStartIndex s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Word32
     return val
 
-attributeReadEndIndex :: Attribute -> IO Word32
-attributeReadEndIndex s = withManagedPtr s $ \ptr -> do
+attributeWriteStartIndex :: MonadIO m => Attribute -> Word32 -> m ()
+attributeWriteStartIndex s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Word32)
+
+data AttributeStartIndexFieldInfo
+instance AttrInfo AttributeStartIndexFieldInfo where
+    type AttrAllowedOps AttributeStartIndexFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AttributeStartIndexFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint AttributeStartIndexFieldInfo = (~) Attribute
+    type AttrGetType AttributeStartIndexFieldInfo = Word32
+    type AttrLabel AttributeStartIndexFieldInfo = "start_index"
+    attrGet _ = attributeReadStartIndex
+    attrSet _ = attributeWriteStartIndex
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+attributeStartIndex :: AttrLabelProxy "startIndex"
+attributeStartIndex = AttrLabelProxy
+
+
+attributeReadEndIndex :: MonadIO m => Attribute -> m Word32
+attributeReadEndIndex s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 12) :: IO Word32
     return val
 
+attributeWriteEndIndex :: MonadIO m => Attribute -> Word32 -> m ()
+attributeWriteEndIndex s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 12) (val :: Word32)
+
+data AttributeEndIndexFieldInfo
+instance AttrInfo AttributeEndIndexFieldInfo where
+    type AttrAllowedOps AttributeEndIndexFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint AttributeEndIndexFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint AttributeEndIndexFieldInfo = (~) Attribute
+    type AttrGetType AttributeEndIndexFieldInfo = Word32
+    type AttrLabel AttributeEndIndexFieldInfo = "end_index"
+    attrGet _ = attributeReadEndIndex
+    attrSet _ = attributeWriteEndIndex
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+attributeEndIndex :: AttrLabelProxy "endIndex"
+attributeEndIndex = AttrLabelProxy
+
+
+
+type instance AttributeList Attribute = AttributeAttributeList
+type AttributeAttributeList = ('[ '("klass", AttributeKlassFieldInfo), '("startIndex", AttributeStartIndexFieldInfo), '("endIndex", AttributeEndIndexFieldInfo)] :: [(Symbol, *)])
+
 -- method Attribute::destroy
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Attribute", 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
 
@@ -122,7 +206,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr2", argType = TInterface "Pango" "Attribute", 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
 
@@ -154,7 +238,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "klass", argType = TInterface "Pango" "AttrClass", 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/Pango/Structs/Attribute.hs-boot b/GI/Pango/Structs/Attribute.hs-boot
--- a/GI/Pango/Structs/Attribute.hs-boot
+++ b/GI/Pango/Structs/Attribute.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.Attribute 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/Pango/Structs/Color.hs b/GI/Pango/Structs/Color.hs
--- a/GI/Pango/Structs/Color.hs
+++ b/GI/Pango/Structs/Color.hs
@@ -43,24 +43,30 @@
 
  -- * Properties
 -- ** Blue
+    colorBlue                               ,
     colorReadBlue                           ,
+    colorWriteBlue                          ,
 
 
 -- ** Green
+    colorGreen                              ,
     colorReadGreen                          ,
+    colorWriteGreen                         ,
 
 
 -- ** 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
@@ -79,29 +85,100 @@
 newZeroColor :: MonadIO m => m Color
 newZeroColor = liftIO $ callocBoxedBytes 6 >>= 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
 
-colorReadRed :: Color -> IO Word16
-colorReadRed s = withManagedPtr s $ \ptr -> do
+colorReadRed :: MonadIO m => Color -> m Word16
+colorReadRed s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: 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` 0) (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` 2) :: 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` 2) (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` 4) :: IO Word16
     return val
 
+colorWriteBlue :: MonadIO m => Color -> Word16 -> m ()
+colorWriteBlue s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (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 = ('[ '("red", ColorRedFieldInfo), '("green", ColorGreenFieldInfo), '("blue", ColorBlueFieldInfo)] :: [(Symbol, *)])
+
 -- method Color::copy
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Color"
+-- returnType : Just (TInterface "Pango" "Color")
 -- throws : False
 -- Skip return : False
 
@@ -113,24 +190,25 @@
 colorCopy ::
     (MonadIO m) =>
     Color                                   -- _obj
-    -> m Color                              -- result
+    -> m (Maybe Color)                      -- result
 colorCopy _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_color_copy _obj'
-    checkUnexpectedReturnNULL "pango_color_copy" result
-    result' <- (wrapBoxed Color) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed Color) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data ColorCopyMethodInfo
-instance (signature ~ (m Color), MonadIO m) => MethodInfo ColorCopyMethodInfo Color signature where
+instance (signature ~ (m (Maybe Color)), MonadIO m) => MethodInfo ColorCopyMethodInfo Color signature where
     overloadedMethod _ = colorCopy
 
 -- method Color::free
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "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
 
@@ -157,7 +235,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Color", 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
 
@@ -189,7 +267,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "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
 
diff --git a/GI/Pango/Structs/Color.hs-boot b/GI/Pango/Structs/Color.hs-boot
--- a/GI/Pango/Structs/Color.hs-boot
+++ b/GI/Pango/Structs/Color.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.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/Pango/Structs/Coverage.hs b/GI/Pango/Structs/Coverage.hs
--- a/GI/Pango/Structs/Coverage.hs
+++ b/GI/Pango/Structs/Coverage.hs
@@ -47,9 +47,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
@@ -61,28 +61,32 @@
 noCoverage :: Maybe Coverage
 noCoverage = Nothing
 
+
+type instance AttributeList Coverage = CoverageAttributeList
+type CoverageAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method Coverage::get
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "CoverageLevel"
+-- returnType : Just (TInterface "Pango" "CoverageLevel")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_coverage_get" pango_coverage_get :: 
     Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
-    Int32 ->                                -- index_ : TBasicType TInt32
+    Int32 ->                                -- index_ : TBasicType TInt
     IO CUInt
 
 
 coverageGet ::
     (MonadIO m) =>
     Coverage                                -- _obj
-    -> Int32                                -- index
+    -> Int32                                -- index_
     -> m CoverageLevel                      -- result
-coverageGet _obj index = liftIO $ do
+coverageGet _obj index_ = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_coverage_get _obj' index
+    result <- pango_coverage_get _obj' index_
     let result' = (toEnum . fromIntegral) result
     touchManagedPtr _obj
     return result'
@@ -95,7 +99,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "other", argType = TInterface "Pango" "Coverage", 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
 
@@ -124,15 +128,15 @@
 
 -- method Coverage::set
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "level", argType = TInterface "Pango" "CoverageLevel", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "level", argType = TInterface "Pango" "CoverageLevel", 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 "pango_coverage_set" pango_coverage_set :: 
     Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
-    Int32 ->                                -- index_ : TBasicType TInt32
+    Int32 ->                                -- index_ : TBasicType TInt
     CUInt ->                                -- level : TInterface "Pango" "CoverageLevel"
     IO ()
 
@@ -140,13 +144,13 @@
 coverageSet ::
     (MonadIO m) =>
     Coverage                                -- _obj
-    -> Int32                                -- index
+    -> Int32                                -- index_
     -> CoverageLevel                        -- level
     -> m ()                                 -- result
-coverageSet _obj index level = liftIO $ do
+coverageSet _obj index_ level = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     let level' = (fromIntegral . fromEnum) level
-    pango_coverage_set _obj' index level'
+    pango_coverage_set _obj' index_ level'
     touchManagedPtr _obj
     return ()
 
@@ -156,16 +160,16 @@
 
 -- method Coverage::to_bytes
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bytes", argType = TCArray False (-1) 2 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_bytes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_bytes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bytes", argType = TCArray False (-1) 2 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_bytes", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_bytes", 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 "pango_coverage_to_bytes" pango_coverage_to_bytes :: 
     Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
     Ptr (Ptr Word8) ->                      -- bytes : TCArray False (-1) 2 (TBasicType TUInt8)
-    Ptr Int32 ->                            -- n_bytes : TBasicType TInt32
+    Ptr Int32 ->                            -- n_bytes : TBasicType TInt
     IO ()
 
 
@@ -195,7 +199,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", 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/Pango/Structs/Coverage.hs-boot b/GI/Pango/Structs/Coverage.hs-boot
--- a/GI/Pango/Structs/Coverage.hs-boot
+++ b/GI/Pango/Structs/Coverage.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.Coverage 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/Pango/Structs/EngineInfo.hs b/GI/Pango/Structs/EngineInfo.hs
--- a/GI/Pango/Structs/EngineInfo.hs
+++ b/GI/Pango/Structs/EngineInfo.hs
@@ -20,32 +20,46 @@
 
  -- * Properties
 -- ** EngineType
+    engineInfoClearEngineType               ,
+    engineInfoEngineType                    ,
     engineInfoReadEngineType                ,
+    engineInfoWriteEngineType               ,
 
 
 -- ** Id
+    engineInfoClearId                       ,
+    engineInfoId                            ,
     engineInfoReadId                        ,
+    engineInfoWriteId                       ,
 
 
 -- ** NScripts
+    engineInfoNScripts                      ,
     engineInfoReadNScripts                  ,
+    engineInfoWriteNScripts                 ,
 
 
 -- ** RenderType
+    engineInfoClearRenderType               ,
     engineInfoReadRenderType                ,
+    engineInfoRenderType                    ,
+    engineInfoWriteRenderType               ,
 
 
 -- ** Scripts
+    engineInfoClearScripts                  ,
     engineInfoReadScripts                   ,
+    engineInfoScripts                       ,
+    engineInfoWriteScripts                  ,
 
 
 
 
     ) 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
@@ -58,37 +72,172 @@
 newZeroEngineInfo :: MonadIO m => m EngineInfo
 newZeroEngineInfo = liftIO $ callocBytes 40 >>= wrapPtr EngineInfo
 
+instance tag ~ 'AttrSet => Constructible EngineInfo tag where
+    new _ attrs = do
+        o <- newZeroEngineInfo
+        GI.Attributes.set o attrs
+        return o
+
+
 noEngineInfo :: Maybe EngineInfo
 noEngineInfo = Nothing
 
-engineInfoReadId :: EngineInfo -> IO T.Text
-engineInfoReadId s = withManagedPtr s $ \ptr -> do
+engineInfoReadId :: MonadIO m => EngineInfo -> m (Maybe T.Text)
+engineInfoReadId 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
 
-engineInfoReadEngineType :: EngineInfo -> IO T.Text
-engineInfoReadEngineType s = withManagedPtr s $ \ptr -> do
+engineInfoWriteId :: MonadIO m => EngineInfo -> CString -> m ()
+engineInfoWriteId s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: CString)
+
+engineInfoClearId :: MonadIO m => EngineInfo -> m ()
+engineInfoClearId s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: CString)
+
+data EngineInfoIdFieldInfo
+instance AttrInfo EngineInfoIdFieldInfo where
+    type AttrAllowedOps EngineInfoIdFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EngineInfoIdFieldInfo = (~) CString
+    type AttrBaseTypeConstraint EngineInfoIdFieldInfo = (~) EngineInfo
+    type AttrGetType EngineInfoIdFieldInfo = Maybe T.Text
+    type AttrLabel EngineInfoIdFieldInfo = "id"
+    attrGet _ = engineInfoReadId
+    attrSet _ = engineInfoWriteId
+    attrConstruct = undefined
+    attrClear _ = engineInfoClearId
+
+engineInfoId :: AttrLabelProxy "id"
+engineInfoId = AttrLabelProxy
+
+
+engineInfoReadEngineType :: MonadIO m => EngineInfo -> m (Maybe T.Text)
+engineInfoReadEngineType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
 
-engineInfoReadRenderType :: EngineInfo -> IO T.Text
-engineInfoReadRenderType s = withManagedPtr s $ \ptr -> do
+engineInfoWriteEngineType :: MonadIO m => EngineInfo -> CString -> m ()
+engineInfoWriteEngineType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: CString)
+
+engineInfoClearEngineType :: MonadIO m => EngineInfo -> m ()
+engineInfoClearEngineType s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: CString)
+
+data EngineInfoEngineTypeFieldInfo
+instance AttrInfo EngineInfoEngineTypeFieldInfo where
+    type AttrAllowedOps EngineInfoEngineTypeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EngineInfoEngineTypeFieldInfo = (~) CString
+    type AttrBaseTypeConstraint EngineInfoEngineTypeFieldInfo = (~) EngineInfo
+    type AttrGetType EngineInfoEngineTypeFieldInfo = Maybe T.Text
+    type AttrLabel EngineInfoEngineTypeFieldInfo = "engine_type"
+    attrGet _ = engineInfoReadEngineType
+    attrSet _ = engineInfoWriteEngineType
+    attrConstruct = undefined
+    attrClear _ = engineInfoClearEngineType
+
+engineInfoEngineType :: AttrLabelProxy "engineType"
+engineInfoEngineType = AttrLabelProxy
+
+
+engineInfoReadRenderType :: MonadIO m => EngineInfo -> m (Maybe T.Text)
+engineInfoReadRenderType s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
 
-engineInfoReadScripts :: EngineInfo -> IO EngineScriptInfo
-engineInfoReadScripts s = withManagedPtr s $ \ptr -> do
+engineInfoWriteRenderType :: MonadIO m => EngineInfo -> CString -> m ()
+engineInfoWriteRenderType s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: CString)
+
+engineInfoClearRenderType :: MonadIO m => EngineInfo -> m ()
+engineInfoClearRenderType s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: CString)
+
+data EngineInfoRenderTypeFieldInfo
+instance AttrInfo EngineInfoRenderTypeFieldInfo where
+    type AttrAllowedOps EngineInfoRenderTypeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EngineInfoRenderTypeFieldInfo = (~) CString
+    type AttrBaseTypeConstraint EngineInfoRenderTypeFieldInfo = (~) EngineInfo
+    type AttrGetType EngineInfoRenderTypeFieldInfo = Maybe T.Text
+    type AttrLabel EngineInfoRenderTypeFieldInfo = "render_type"
+    attrGet _ = engineInfoReadRenderType
+    attrSet _ = engineInfoWriteRenderType
+    attrConstruct = undefined
+    attrClear _ = engineInfoClearRenderType
+
+engineInfoRenderType :: AttrLabelProxy "renderType"
+engineInfoRenderType = AttrLabelProxy
+
+
+engineInfoReadScripts :: MonadIO m => EngineInfo -> m (Maybe EngineScriptInfo)
+engineInfoReadScripts s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO (Ptr EngineScriptInfo)
-    val' <- (newPtr 16 EngineScriptInfo) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 16 EngineScriptInfo) val'
+        return val''
+    return result
 
-engineInfoReadNScripts :: EngineInfo -> IO Int32
-engineInfoReadNScripts s = withManagedPtr s $ \ptr -> do
+engineInfoWriteScripts :: MonadIO m => EngineInfo -> Ptr EngineScriptInfo -> m ()
+engineInfoWriteScripts s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Ptr EngineScriptInfo)
+
+engineInfoClearScripts :: MonadIO m => EngineInfo -> m ()
+engineInfoClearScripts s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (nullPtr :: Ptr EngineScriptInfo)
+
+data EngineInfoScriptsFieldInfo
+instance AttrInfo EngineInfoScriptsFieldInfo where
+    type AttrAllowedOps EngineInfoScriptsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EngineInfoScriptsFieldInfo = (~) (Ptr EngineScriptInfo)
+    type AttrBaseTypeConstraint EngineInfoScriptsFieldInfo = (~) EngineInfo
+    type AttrGetType EngineInfoScriptsFieldInfo = Maybe EngineScriptInfo
+    type AttrLabel EngineInfoScriptsFieldInfo = "scripts"
+    attrGet _ = engineInfoReadScripts
+    attrSet _ = engineInfoWriteScripts
+    attrConstruct = undefined
+    attrClear _ = engineInfoClearScripts
+
+engineInfoScripts :: AttrLabelProxy "scripts"
+engineInfoScripts = AttrLabelProxy
+
+
+engineInfoReadNScripts :: MonadIO m => EngineInfo -> m Int32
+engineInfoReadNScripts s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO Int32
     return val
+
+engineInfoWriteNScripts :: MonadIO m => EngineInfo -> Int32 -> m ()
+engineInfoWriteNScripts s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Int32)
+
+data EngineInfoNScriptsFieldInfo
+instance AttrInfo EngineInfoNScriptsFieldInfo where
+    type AttrAllowedOps EngineInfoNScriptsFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EngineInfoNScriptsFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint EngineInfoNScriptsFieldInfo = (~) EngineInfo
+    type AttrGetType EngineInfoNScriptsFieldInfo = Int32
+    type AttrLabel EngineInfoNScriptsFieldInfo = "n_scripts"
+    attrGet _ = engineInfoReadNScripts
+    attrSet _ = engineInfoWriteNScripts
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+engineInfoNScripts :: AttrLabelProxy "nScripts"
+engineInfoNScripts = AttrLabelProxy
+
+
+
+type instance AttributeList EngineInfo = EngineInfoAttributeList
+type EngineInfoAttributeList = ('[ '("id", EngineInfoIdFieldInfo), '("engineType", EngineInfoEngineTypeFieldInfo), '("renderType", EngineInfoRenderTypeFieldInfo), '("scripts", EngineInfoScriptsFieldInfo), '("nScripts", EngineInfoNScriptsFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEngineInfoMethod (t :: Symbol) (o :: *) :: * where
     ResolveEngineInfoMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/EngineInfo.hs-boot b/GI/Pango/Structs/EngineInfo.hs-boot
--- a/GI/Pango/Structs/EngineInfo.hs-boot
+++ b/GI/Pango/Structs/EngineInfo.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.EngineInfo 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/Pango/Structs/EngineScriptInfo.hs b/GI/Pango/Structs/EngineScriptInfo.hs
--- a/GI/Pango/Structs/EngineScriptInfo.hs
+++ b/GI/Pango/Structs/EngineScriptInfo.hs
@@ -20,20 +20,25 @@
 
  -- * Properties
 -- ** Langs
+    engineScriptInfoClearLangs              ,
+    engineScriptInfoLangs                   ,
     engineScriptInfoReadLangs               ,
+    engineScriptInfoWriteLangs              ,
 
 
 -- ** Script
     engineScriptInfoReadScript              ,
+    engineScriptInfoScript                  ,
+    engineScriptInfoWriteScript             ,
 
 
 
 
     ) 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
@@ -46,20 +51,78 @@
 newZeroEngineScriptInfo :: MonadIO m => m EngineScriptInfo
 newZeroEngineScriptInfo = liftIO $ callocBytes 16 >>= wrapPtr EngineScriptInfo
 
+instance tag ~ 'AttrSet => Constructible EngineScriptInfo tag where
+    new _ attrs = do
+        o <- newZeroEngineScriptInfo
+        GI.Attributes.set o attrs
+        return o
+
+
 noEngineScriptInfo :: Maybe EngineScriptInfo
 noEngineScriptInfo = Nothing
 
-engineScriptInfoReadScript :: EngineScriptInfo -> IO Script
-engineScriptInfoReadScript s = withManagedPtr s $ \ptr -> do
+engineScriptInfoReadScript :: MonadIO m => EngineScriptInfo -> m Script
+engineScriptInfoReadScript s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CUInt
     let val' = (toEnum . fromIntegral) val
     return val'
 
-engineScriptInfoReadLangs :: EngineScriptInfo -> IO T.Text
-engineScriptInfoReadLangs s = withManagedPtr s $ \ptr -> do
+engineScriptInfoWriteScript :: MonadIO m => EngineScriptInfo -> Script -> m ()
+engineScriptInfoWriteScript s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CUInt)
+
+data EngineScriptInfoScriptFieldInfo
+instance AttrInfo EngineScriptInfoScriptFieldInfo where
+    type AttrAllowedOps EngineScriptInfoScriptFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint EngineScriptInfoScriptFieldInfo = (~) Script
+    type AttrBaseTypeConstraint EngineScriptInfoScriptFieldInfo = (~) EngineScriptInfo
+    type AttrGetType EngineScriptInfoScriptFieldInfo = Script
+    type AttrLabel EngineScriptInfoScriptFieldInfo = "script"
+    attrGet _ = engineScriptInfoReadScript
+    attrSet _ = engineScriptInfoWriteScript
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+engineScriptInfoScript :: AttrLabelProxy "script"
+engineScriptInfoScript = AttrLabelProxy
+
+
+engineScriptInfoReadLangs :: MonadIO m => EngineScriptInfo -> m (Maybe T.Text)
+engineScriptInfoReadLangs s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
+
+engineScriptInfoWriteLangs :: MonadIO m => EngineScriptInfo -> CString -> m ()
+engineScriptInfoWriteLangs s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: CString)
+
+engineScriptInfoClearLangs :: MonadIO m => EngineScriptInfo -> m ()
+engineScriptInfoClearLangs s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: CString)
+
+data EngineScriptInfoLangsFieldInfo
+instance AttrInfo EngineScriptInfoLangsFieldInfo where
+    type AttrAllowedOps EngineScriptInfoLangsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint EngineScriptInfoLangsFieldInfo = (~) CString
+    type AttrBaseTypeConstraint EngineScriptInfoLangsFieldInfo = (~) EngineScriptInfo
+    type AttrGetType EngineScriptInfoLangsFieldInfo = Maybe T.Text
+    type AttrLabel EngineScriptInfoLangsFieldInfo = "langs"
+    attrGet _ = engineScriptInfoReadLangs
+    attrSet _ = engineScriptInfoWriteLangs
+    attrConstruct = undefined
+    attrClear _ = engineScriptInfoClearLangs
+
+engineScriptInfoLangs :: AttrLabelProxy "langs"
+engineScriptInfoLangs = AttrLabelProxy
+
+
+
+type instance AttributeList EngineScriptInfo = EngineScriptInfoAttributeList
+type EngineScriptInfoAttributeList = ('[ '("script", EngineScriptInfoScriptFieldInfo), '("langs", EngineScriptInfoLangsFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveEngineScriptInfoMethod (t :: Symbol) (o :: *) :: * where
     ResolveEngineScriptInfoMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/EngineScriptInfo.hs-boot b/GI/Pango/Structs/EngineScriptInfo.hs-boot
--- a/GI/Pango/Structs/EngineScriptInfo.hs-boot
+++ b/GI/Pango/Structs/EngineScriptInfo.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.EngineScriptInfo 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/Pango/Structs/FontDescription.hs b/GI/Pango/Structs/FontDescription.hs
--- a/GI/Pango/Structs/FontDescription.hs
+++ b/GI/Pango/Structs/FontDescription.hs
@@ -177,9 +177,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
@@ -197,11 +197,15 @@
 noFontDescription :: Maybe FontDescription
 noFontDescription = Nothing
 
+
+type instance AttributeList FontDescription = FontDescriptionAttributeList
+type FontDescriptionAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method FontDescription::new
 -- method type : Constructor
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Pango" "FontDescription"
+-- returnType : Just (TInterface "Pango" "FontDescription")
 -- throws : False
 -- Skip return : False
 
@@ -222,7 +226,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "old_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_match", argType = TInterface "Pango" "FontDescription", 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
 
@@ -262,7 +266,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontDescription"
+-- returnType : Just (TInterface "Pango" "FontDescription")
 -- throws : False
 -- Skip return : False
 
@@ -274,24 +278,25 @@
 fontDescriptionCopy ::
     (MonadIO m) =>
     FontDescription                         -- _obj
-    -> m FontDescription                    -- result
+    -> m (Maybe FontDescription)            -- result
 fontDescriptionCopy _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_font_description_copy _obj'
-    checkUnexpectedReturnNULL "pango_font_description_copy" result
-    result' <- (wrapBoxed FontDescription) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed FontDescription) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data FontDescriptionCopyMethodInfo
-instance (signature ~ (m FontDescription), MonadIO m) => MethodInfo FontDescriptionCopyMethodInfo FontDescription signature where
+instance (signature ~ (m (Maybe FontDescription)), MonadIO m) => MethodInfo FontDescriptionCopyMethodInfo FontDescription signature where
     overloadedMethod _ = fontDescriptionCopy
 
 -- method FontDescription::copy_static
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontDescription"
+-- returnType : Just (TInterface "Pango" "FontDescription")
 -- throws : False
 -- Skip return : False
 
@@ -303,24 +308,25 @@
 fontDescriptionCopyStatic ::
     (MonadIO m) =>
     FontDescription                         -- _obj
-    -> m FontDescription                    -- result
+    -> m (Maybe FontDescription)            -- result
 fontDescriptionCopyStatic _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_font_description_copy_static _obj'
-    checkUnexpectedReturnNULL "pango_font_description_copy_static" result
-    result' <- (wrapBoxed FontDescription) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed FontDescription) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data FontDescriptionCopyStaticMethodInfo
-instance (signature ~ (m FontDescription), MonadIO m) => MethodInfo FontDescriptionCopyStaticMethodInfo FontDescription signature where
+instance (signature ~ (m (Maybe FontDescription)), MonadIO m) => MethodInfo FontDescriptionCopyStaticMethodInfo FontDescription signature where
     overloadedMethod _ = fontDescriptionCopyStatic
 
 -- method FontDescription::equal
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc2", argType = TInterface "Pango" "FontDescription", 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
 
@@ -352,7 +358,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", 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
 
@@ -379,7 +385,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", 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
 
@@ -391,24 +397,25 @@
 fontDescriptionGetFamily ::
     (MonadIO m) =>
     FontDescription                         -- _obj
-    -> m T.Text                             -- result
+    -> m (Maybe T.Text)                     -- result
 fontDescriptionGetFamily _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_font_description_get_family _obj'
-    checkUnexpectedReturnNULL "pango_font_description_get_family" result
-    result' <- cstringToText result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- cstringToText result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data FontDescriptionGetFamilyMethodInfo
-instance (signature ~ (m T.Text), MonadIO m) => MethodInfo FontDescriptionGetFamilyMethodInfo FontDescription signature where
+instance (signature ~ (m (Maybe T.Text)), MonadIO m) => MethodInfo FontDescriptionGetFamilyMethodInfo FontDescription signature where
     overloadedMethod _ = fontDescriptionGetFamily
 
 -- method FontDescription::get_gravity
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Gravity"
+-- returnType : Just (TInterface "Pango" "Gravity")
 -- throws : False
 -- Skip return : False
 
@@ -436,7 +443,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontMask"
+-- returnType : Just (TInterface "Pango" "FontMask")
 -- throws : False
 -- Skip return : False
 
@@ -464,7 +471,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", 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
 
@@ -491,7 +498,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", 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
 
@@ -519,7 +526,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Stretch"
+-- returnType : Just (TInterface "Pango" "Stretch")
 -- throws : False
 -- Skip return : False
 
@@ -547,7 +554,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Style"
+-- returnType : Just (TInterface "Pango" "Style")
 -- throws : False
 -- Skip return : False
 
@@ -575,7 +582,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Variant"
+-- returnType : Just (TInterface "Pango" "Variant")
 -- throws : False
 -- Skip return : False
 
@@ -603,7 +610,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Weight"
+-- returnType : Just (TInterface "Pango" "Weight")
 -- throws : False
 -- Skip return : False
 
@@ -631,7 +638,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", 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
 
@@ -658,7 +665,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "replace_existing", 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
 
@@ -696,7 +703,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "replace_existing", 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
 
@@ -730,7 +737,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", 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
 
@@ -760,7 +767,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "family", 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
 
@@ -791,7 +798,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "family", 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
 
@@ -822,7 +829,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "gravity", argType = TInterface "Pango" "Gravity", 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
 
@@ -850,15 +857,15 @@
 
 -- method FontDescription::set_size
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", 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 "pango_font_description_set_size" pango_font_description_set_size :: 
     Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    Int32 ->                                -- size : TBasicType TInt32
+    Int32 ->                                -- size : TBasicType TInt
     IO ()
 
 
@@ -881,7 +888,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stretch", argType = TInterface "Pango" "Stretch", 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
 
@@ -911,7 +918,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "style", argType = TInterface "Pango" "Style", 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
 
@@ -941,7 +948,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "variant", argType = TInterface "Pango" "Variant", 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
 
@@ -971,7 +978,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "weight", argType = TInterface "Pango" "Weight", 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
 
@@ -1001,7 +1008,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", 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
 
@@ -1031,7 +1038,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", 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
 
@@ -1061,7 +1068,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "to_unset", argType = TInterface "Pango" "FontMask", 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
 
@@ -1091,7 +1098,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontDescription"
+-- returnType : Just (TInterface "Pango" "FontDescription")
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Pango/Structs/FontDescription.hs-boot b/GI/Pango/Structs/FontDescription.hs-boot
--- a/GI/Pango/Structs/FontDescription.hs-boot
+++ b/GI/Pango/Structs/FontDescription.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.FontDescription 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/Pango/Structs/FontMetrics.hs b/GI/Pango/Structs/FontMetrics.hs
--- a/GI/Pango/Structs/FontMetrics.hs
+++ b/GI/Pango/Structs/FontMetrics.hs
@@ -80,9 +80,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
@@ -101,14 +101,25 @@
 newZeroFontMetrics :: MonadIO m => m FontMetrics
 newZeroFontMetrics = liftIO $ callocBoxedBytes 36 >>= wrapBoxed FontMetrics
 
+instance tag ~ 'AttrSet => Constructible FontMetrics tag where
+    new _ attrs = do
+        o <- newZeroFontMetrics
+        GI.Attributes.set o attrs
+        return o
+
+
 noFontMetrics :: Maybe FontMetrics
 noFontMetrics = Nothing
 
+
+type instance AttributeList FontMetrics = FontMetricsAttributeList
+type FontMetricsAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method FontMetrics::new
 -- method type : Constructor
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Pango" "FontMetrics"
+-- returnType : Just (TInterface "Pango" "FontMetrics")
 -- throws : False
 -- Skip return : False
 
@@ -129,7 +140,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMetrics", 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
 
@@ -156,7 +167,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMetrics", 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
 
@@ -183,7 +194,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMetrics", 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
 
@@ -210,7 +221,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMetrics", 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
 
@@ -237,7 +248,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMetrics", 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
 
@@ -264,7 +275,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMetrics", 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
 
@@ -291,7 +302,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMetrics", 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
 
@@ -318,7 +329,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMetrics", 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
 
@@ -345,7 +356,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "FontMetrics"
+-- returnType : Just (TInterface "Pango" "FontMetrics")
 -- throws : False
 -- Skip return : False
 
@@ -357,24 +368,25 @@
 fontMetricsRef ::
     (MonadIO m) =>
     FontMetrics                             -- _obj
-    -> m FontMetrics                        -- result
+    -> m (Maybe FontMetrics)                -- result
 fontMetricsRef _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_font_metrics_ref _obj'
-    checkUnexpectedReturnNULL "pango_font_metrics_ref" result
-    result' <- (wrapBoxed FontMetrics) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed FontMetrics) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data FontMetricsRefMethodInfo
-instance (signature ~ (m FontMetrics), MonadIO m) => MethodInfo FontMetricsRefMethodInfo FontMetrics signature where
+instance (signature ~ (m (Maybe FontMetrics)), MonadIO m) => MethodInfo FontMetricsRefMethodInfo FontMetrics signature where
     overloadedMethod _ = fontMetricsRef
 
 -- method FontMetrics::unref
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "FontMetrics", 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/Pango/Structs/FontMetrics.hs-boot b/GI/Pango/Structs/FontMetrics.hs-boot
--- a/GI/Pango/Structs/FontMetrics.hs-boot
+++ b/GI/Pango/Structs/FontMetrics.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.FontMetrics 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/Pango/Structs/GlyphGeometry.hs b/GI/Pango/Structs/GlyphGeometry.hs
--- a/GI/Pango/Structs/GlyphGeometry.hs
+++ b/GI/Pango/Structs/GlyphGeometry.hs
@@ -21,23 +21,29 @@
  -- * Properties
 -- ** Width
     glyphGeometryReadWidth                  ,
+    glyphGeometryWidth                      ,
+    glyphGeometryWriteWidth                 ,
 
 
 -- ** XOffset
     glyphGeometryReadXOffset                ,
+    glyphGeometryWriteXOffset               ,
+    glyphGeometryXOffset                    ,
 
 
 -- ** YOffset
     glyphGeometryReadYOffset                ,
+    glyphGeometryWriteYOffset               ,
+    glyphGeometryYOffset                    ,
 
 
 
 
     ) 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
@@ -50,23 +56,94 @@
 newZeroGlyphGeometry :: MonadIO m => m GlyphGeometry
 newZeroGlyphGeometry = liftIO $ callocBytes 12 >>= wrapPtr GlyphGeometry
 
+instance tag ~ 'AttrSet => Constructible GlyphGeometry tag where
+    new _ attrs = do
+        o <- newZeroGlyphGeometry
+        GI.Attributes.set o attrs
+        return o
+
+
 noGlyphGeometry :: Maybe GlyphGeometry
 noGlyphGeometry = Nothing
 
-glyphGeometryReadWidth :: GlyphGeometry -> IO Int32
-glyphGeometryReadWidth s = withManagedPtr s $ \ptr -> do
+glyphGeometryReadWidth :: MonadIO m => GlyphGeometry -> m Int32
+glyphGeometryReadWidth s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int32
     return val
 
-glyphGeometryReadXOffset :: GlyphGeometry -> IO Int32
-glyphGeometryReadXOffset s = withManagedPtr s $ \ptr -> do
+glyphGeometryWriteWidth :: MonadIO m => GlyphGeometry -> Int32 -> m ()
+glyphGeometryWriteWidth s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int32)
+
+data GlyphGeometryWidthFieldInfo
+instance AttrInfo GlyphGeometryWidthFieldInfo where
+    type AttrAllowedOps GlyphGeometryWidthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphGeometryWidthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphGeometryWidthFieldInfo = (~) GlyphGeometry
+    type AttrGetType GlyphGeometryWidthFieldInfo = Int32
+    type AttrLabel GlyphGeometryWidthFieldInfo = "width"
+    attrGet _ = glyphGeometryReadWidth
+    attrSet _ = glyphGeometryWriteWidth
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphGeometryWidth :: AttrLabelProxy "width"
+glyphGeometryWidth = AttrLabelProxy
+
+
+glyphGeometryReadXOffset :: MonadIO m => GlyphGeometry -> m Int32
+glyphGeometryReadXOffset s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO Int32
     return val
 
-glyphGeometryReadYOffset :: GlyphGeometry -> IO Int32
-glyphGeometryReadYOffset s = withManagedPtr s $ \ptr -> do
+glyphGeometryWriteXOffset :: MonadIO m => GlyphGeometry -> Int32 -> m ()
+glyphGeometryWriteXOffset s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (val :: Int32)
+
+data GlyphGeometryXOffsetFieldInfo
+instance AttrInfo GlyphGeometryXOffsetFieldInfo where
+    type AttrAllowedOps GlyphGeometryXOffsetFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphGeometryXOffsetFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphGeometryXOffsetFieldInfo = (~) GlyphGeometry
+    type AttrGetType GlyphGeometryXOffsetFieldInfo = Int32
+    type AttrLabel GlyphGeometryXOffsetFieldInfo = "x_offset"
+    attrGet _ = glyphGeometryReadXOffset
+    attrSet _ = glyphGeometryWriteXOffset
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphGeometryXOffset :: AttrLabelProxy "xOffset"
+glyphGeometryXOffset = AttrLabelProxy
+
+
+glyphGeometryReadYOffset :: MonadIO m => GlyphGeometry -> m Int32
+glyphGeometryReadYOffset s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Int32
     return val
+
+glyphGeometryWriteYOffset :: MonadIO m => GlyphGeometry -> Int32 -> m ()
+glyphGeometryWriteYOffset s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Int32)
+
+data GlyphGeometryYOffsetFieldInfo
+instance AttrInfo GlyphGeometryYOffsetFieldInfo where
+    type AttrAllowedOps GlyphGeometryYOffsetFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphGeometryYOffsetFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphGeometryYOffsetFieldInfo = (~) GlyphGeometry
+    type AttrGetType GlyphGeometryYOffsetFieldInfo = Int32
+    type AttrLabel GlyphGeometryYOffsetFieldInfo = "y_offset"
+    attrGet _ = glyphGeometryReadYOffset
+    attrSet _ = glyphGeometryWriteYOffset
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphGeometryYOffset :: AttrLabelProxy "yOffset"
+glyphGeometryYOffset = AttrLabelProxy
+
+
+
+type instance AttributeList GlyphGeometry = GlyphGeometryAttributeList
+type GlyphGeometryAttributeList = ('[ '("width", GlyphGeometryWidthFieldInfo), '("xOffset", GlyphGeometryXOffsetFieldInfo), '("yOffset", GlyphGeometryYOffsetFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveGlyphGeometryMethod (t :: Symbol) (o :: *) :: * where
     ResolveGlyphGeometryMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/GlyphGeometry.hs-boot b/GI/Pango/Structs/GlyphGeometry.hs-boot
--- a/GI/Pango/Structs/GlyphGeometry.hs-boot
+++ b/GI/Pango/Structs/GlyphGeometry.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.GlyphGeometry 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/Pango/Structs/GlyphInfo.hs b/GI/Pango/Structs/GlyphInfo.hs
--- a/GI/Pango/Structs/GlyphInfo.hs
+++ b/GI/Pango/Structs/GlyphInfo.hs
@@ -21,24 +21,32 @@
 
  -- * Properties
 -- ** Attr
+    glyphInfoAttr                           ,
+    glyphInfoClearAttr                      ,
     glyphInfoReadAttr                       ,
+    glyphInfoWriteAttr                      ,
 
 
 -- ** Geometry
+    glyphInfoClearGeometry                  ,
+    glyphInfoGeometry                       ,
     glyphInfoReadGeometry                   ,
+    glyphInfoWriteGeometry                  ,
 
 
 -- ** Glyph
+    glyphInfoGlyph                          ,
     glyphInfoReadGlyph                      ,
+    glyphInfoWriteGlyph                     ,
 
 
 
 
     ) 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 +59,108 @@
 newZeroGlyphInfo :: MonadIO m => m GlyphInfo
 newZeroGlyphInfo = liftIO $ callocBytes 20 >>= wrapPtr GlyphInfo
 
+instance tag ~ 'AttrSet => Constructible GlyphInfo tag where
+    new _ attrs = do
+        o <- newZeroGlyphInfo
+        GI.Attributes.set o attrs
+        return o
+
+
 noGlyphInfo :: Maybe GlyphInfo
 noGlyphInfo = Nothing
 
-glyphInfoReadGlyph :: GlyphInfo -> IO Word32
-glyphInfoReadGlyph s = withManagedPtr s $ \ptr -> do
+glyphInfoReadGlyph :: MonadIO m => GlyphInfo -> m Word32
+glyphInfoReadGlyph s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word32
     return val
 
-glyphInfoReadGeometry :: GlyphInfo -> IO GlyphGeometry
-glyphInfoReadGeometry s = withManagedPtr s $ \ptr -> do
+glyphInfoWriteGlyph :: MonadIO m => GlyphInfo -> Word32 -> m ()
+glyphInfoWriteGlyph s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word32)
+
+data GlyphInfoGlyphFieldInfo
+instance AttrInfo GlyphInfoGlyphFieldInfo where
+    type AttrAllowedOps GlyphInfoGlyphFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphInfoGlyphFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint GlyphInfoGlyphFieldInfo = (~) GlyphInfo
+    type AttrGetType GlyphInfoGlyphFieldInfo = Word32
+    type AttrLabel GlyphInfoGlyphFieldInfo = "glyph"
+    attrGet _ = glyphInfoReadGlyph
+    attrSet _ = glyphInfoWriteGlyph
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphInfoGlyph :: AttrLabelProxy "glyph"
+glyphInfoGlyph = AttrLabelProxy
+
+
+glyphInfoReadGeometry :: MonadIO m => GlyphInfo -> m (Maybe GlyphGeometry)
+glyphInfoReadGeometry s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO (Ptr GlyphGeometry)
-    val' <- (newPtr 12 GlyphGeometry) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 12 GlyphGeometry) val'
+        return val''
+    return result
 
-glyphInfoReadAttr :: GlyphInfo -> IO GlyphVisAttr
-glyphInfoReadAttr s = withManagedPtr s $ \ptr -> do
+glyphInfoWriteGeometry :: MonadIO m => GlyphInfo -> Ptr GlyphGeometry -> m ()
+glyphInfoWriteGeometry s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (val :: Ptr GlyphGeometry)
+
+glyphInfoClearGeometry :: MonadIO m => GlyphInfo -> m ()
+glyphInfoClearGeometry s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (nullPtr :: Ptr GlyphGeometry)
+
+data GlyphInfoGeometryFieldInfo
+instance AttrInfo GlyphInfoGeometryFieldInfo where
+    type AttrAllowedOps GlyphInfoGeometryFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint GlyphInfoGeometryFieldInfo = (~) (Ptr GlyphGeometry)
+    type AttrBaseTypeConstraint GlyphInfoGeometryFieldInfo = (~) GlyphInfo
+    type AttrGetType GlyphInfoGeometryFieldInfo = Maybe GlyphGeometry
+    type AttrLabel GlyphInfoGeometryFieldInfo = "geometry"
+    attrGet _ = glyphInfoReadGeometry
+    attrSet _ = glyphInfoWriteGeometry
+    attrConstruct = undefined
+    attrClear _ = glyphInfoClearGeometry
+
+glyphInfoGeometry :: AttrLabelProxy "geometry"
+glyphInfoGeometry = AttrLabelProxy
+
+
+glyphInfoReadAttr :: MonadIO m => GlyphInfo -> m (Maybe GlyphVisAttr)
+glyphInfoReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr GlyphVisAttr)
-    val' <- (newPtr 4 GlyphVisAttr) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 4 GlyphVisAttr) val'
+        return val''
+    return result
+
+glyphInfoWriteAttr :: MonadIO m => GlyphInfo -> Ptr GlyphVisAttr -> m ()
+glyphInfoWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Ptr GlyphVisAttr)
+
+glyphInfoClearAttr :: MonadIO m => GlyphInfo -> m ()
+glyphInfoClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: Ptr GlyphVisAttr)
+
+data GlyphInfoAttrFieldInfo
+instance AttrInfo GlyphInfoAttrFieldInfo where
+    type AttrAllowedOps GlyphInfoAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint GlyphInfoAttrFieldInfo = (~) (Ptr GlyphVisAttr)
+    type AttrBaseTypeConstraint GlyphInfoAttrFieldInfo = (~) GlyphInfo
+    type AttrGetType GlyphInfoAttrFieldInfo = Maybe GlyphVisAttr
+    type AttrLabel GlyphInfoAttrFieldInfo = "attr"
+    attrGet _ = glyphInfoReadAttr
+    attrSet _ = glyphInfoWriteAttr
+    attrConstruct = undefined
+    attrClear _ = glyphInfoClearAttr
+
+glyphInfoAttr :: AttrLabelProxy "attr"
+glyphInfoAttr = AttrLabelProxy
+
+
+
+type instance AttributeList GlyphInfo = GlyphInfoAttributeList
+type GlyphInfoAttributeList = ('[ '("glyph", GlyphInfoGlyphFieldInfo), '("geometry", GlyphInfoGeometryFieldInfo), '("attr", GlyphInfoAttrFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveGlyphInfoMethod (t :: Symbol) (o :: *) :: * where
     ResolveGlyphInfoMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/GlyphInfo.hs-boot b/GI/Pango/Structs/GlyphInfo.hs-boot
--- a/GI/Pango/Structs/GlyphInfo.hs-boot
+++ b/GI/Pango/Structs/GlyphInfo.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.GlyphInfo 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/Pango/Structs/GlyphItem.hs b/GI/Pango/Structs/GlyphItem.hs
--- a/GI/Pango/Structs/GlyphItem.hs
+++ b/GI/Pango/Structs/GlyphItem.hs
@@ -56,20 +56,26 @@
 
  -- * Properties
 -- ** Glyphs
+    glyphItemClearGlyphs                    ,
+    glyphItemGlyphs                         ,
     glyphItemReadGlyphs                     ,
+    glyphItemWriteGlyphs                    ,
 
 
 -- ** Item
+    glyphItemClearItem                      ,
+    glyphItemItem                           ,
     glyphItemReadItem                       ,
+    glyphItemWriteItem                      ,
 
 
 
 
     ) 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
@@ -88,26 +94,89 @@
 newZeroGlyphItem :: MonadIO m => m GlyphItem
 newZeroGlyphItem = liftIO $ callocBoxedBytes 16 >>= wrapBoxed GlyphItem
 
+instance tag ~ 'AttrSet => Constructible GlyphItem tag where
+    new _ attrs = do
+        o <- newZeroGlyphItem
+        GI.Attributes.set o attrs
+        return o
+
+
 noGlyphItem :: Maybe GlyphItem
 noGlyphItem = Nothing
 
-glyphItemReadItem :: GlyphItem -> IO Item
-glyphItemReadItem s = withManagedPtr s $ \ptr -> do
+glyphItemReadItem :: MonadIO m => GlyphItem -> m (Maybe Item)
+glyphItemReadItem s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Item)
-    val' <- (newBoxed Item) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newBoxed Item) val'
+        return val''
+    return result
 
-glyphItemReadGlyphs :: GlyphItem -> IO GlyphString
-glyphItemReadGlyphs s = withManagedPtr s $ \ptr -> do
+glyphItemWriteItem :: MonadIO m => GlyphItem -> Ptr Item -> m ()
+glyphItemWriteItem s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Item)
+
+glyphItemClearItem :: MonadIO m => GlyphItem -> m ()
+glyphItemClearItem s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Item)
+
+data GlyphItemItemFieldInfo
+instance AttrInfo GlyphItemItemFieldInfo where
+    type AttrAllowedOps GlyphItemItemFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint GlyphItemItemFieldInfo = (~) (Ptr Item)
+    type AttrBaseTypeConstraint GlyphItemItemFieldInfo = (~) GlyphItem
+    type AttrGetType GlyphItemItemFieldInfo = Maybe Item
+    type AttrLabel GlyphItemItemFieldInfo = "item"
+    attrGet _ = glyphItemReadItem
+    attrSet _ = glyphItemWriteItem
+    attrConstruct = undefined
+    attrClear _ = glyphItemClearItem
+
+glyphItemItem :: AttrLabelProxy "item"
+glyphItemItem = AttrLabelProxy
+
+
+glyphItemReadGlyphs :: MonadIO m => GlyphItem -> m (Maybe GlyphString)
+glyphItemReadGlyphs s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO (Ptr GlyphString)
-    val' <- (newBoxed GlyphString) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newBoxed GlyphString) val'
+        return val''
+    return result
 
+glyphItemWriteGlyphs :: MonadIO m => GlyphItem -> Ptr GlyphString -> m ()
+glyphItemWriteGlyphs s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Ptr GlyphString)
+
+glyphItemClearGlyphs :: MonadIO m => GlyphItem -> m ()
+glyphItemClearGlyphs s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: Ptr GlyphString)
+
+data GlyphItemGlyphsFieldInfo
+instance AttrInfo GlyphItemGlyphsFieldInfo where
+    type AttrAllowedOps GlyphItemGlyphsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint GlyphItemGlyphsFieldInfo = (~) (Ptr GlyphString)
+    type AttrBaseTypeConstraint GlyphItemGlyphsFieldInfo = (~) GlyphItem
+    type AttrGetType GlyphItemGlyphsFieldInfo = Maybe GlyphString
+    type AttrLabel GlyphItemGlyphsFieldInfo = "glyphs"
+    attrGet _ = glyphItemReadGlyphs
+    attrSet _ = glyphItemWriteGlyphs
+    attrConstruct = undefined
+    attrClear _ = glyphItemClearGlyphs
+
+glyphItemGlyphs :: AttrLabelProxy "glyphs"
+glyphItemGlyphs = AttrLabelProxy
+
+
+
+type instance AttributeList GlyphItem = GlyphItemAttributeList
+type GlyphItemAttributeList = ('[ '("item", GlyphItemItemFieldInfo), '("glyphs", GlyphItemGlyphsFieldInfo)] :: [(Symbol, *)])
+
 -- method GlyphItem::apply_attrs
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "list", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGSList (TInterface "Pango" "GlyphItem")
+-- returnType : Just (TGSList (TInterface "Pango" "GlyphItem"))
 -- throws : False
 -- Skip return : False
 
@@ -129,7 +198,6 @@
     text' <- textToCString text
     let list' = unsafeManagedPtrGetPtr list
     result <- pango_glyph_item_apply_attrs _obj' text' list'
-    checkUnexpectedReturnNULL "pango_glyph_item_apply_attrs" result
     result' <- unpackGSList result
     result'' <- mapM (wrapBoxed GlyphItem) result'
     g_slist_free result
@@ -146,7 +214,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "GlyphItem"
+-- returnType : Just (TInterface "Pango" "GlyphItem")
 -- throws : False
 -- Skip return : False
 
@@ -158,24 +226,25 @@
 glyphItemCopy ::
     (MonadIO m) =>
     GlyphItem                               -- _obj
-    -> m GlyphItem                          -- result
+    -> m (Maybe GlyphItem)                  -- result
 glyphItemCopy _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_glyph_item_copy _obj'
-    checkUnexpectedReturnNULL "pango_glyph_item_copy" result
-    result' <- (wrapBoxed GlyphItem) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed GlyphItem) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data GlyphItemCopyMethodInfo
-instance (signature ~ (m GlyphItem), MonadIO m) => MethodInfo GlyphItemCopyMethodInfo GlyphItem signature where
+instance (signature ~ (m (Maybe GlyphItem)), MonadIO m) => MethodInfo GlyphItemCopyMethodInfo GlyphItem signature where
     overloadedMethod _ = glyphItemCopy
 
 -- method GlyphItem::free
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItem", 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
 
@@ -200,16 +269,16 @@
 
 -- method GlyphItem::get_logical_widths
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "logical_widths", argType = TCArray False (-1) (-1) (TBasicType TInt32), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "logical_widths", argType = TCArray False (-1) (-1) (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 "pango_glyph_item_get_logical_widths" pango_glyph_item_get_logical_widths :: 
     Ptr GlyphItem ->                        -- _obj : TInterface "Pango" "GlyphItem"
     CString ->                              -- text : TBasicType TUTF8
-    Ptr Int32 ->                            -- logical_widths : TCArray False (-1) (-1) (TBasicType TInt32)
+    Ptr Int32 ->                            -- logical_widths : TCArray False (-1) (-1) (TBasicType TInt)
     IO ()
 
 
@@ -233,9 +302,9 @@
 
 -- method GlyphItem::letter_space
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "log_attrs", argType = TCArray False (-1) (-1) (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "letter_spacing", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "log_attrs", argType = TCArray False (-1) (-1) (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "letter_spacing", 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
 
@@ -243,7 +312,7 @@
     Ptr GlyphItem ->                        -- _obj : TInterface "Pango" "GlyphItem"
     CString ->                              -- text : TBasicType TUTF8
     Ptr (Ptr LogAttr) ->                    -- log_attrs : TCArray False (-1) (-1) (TInterface "Pango" "LogAttr")
-    Int32 ->                                -- letter_spacing : TBasicType TInt32
+    Int32 ->                                -- letter_spacing : TBasicType TInt
     IO ()
 
 
@@ -268,16 +337,16 @@
 
 -- method GlyphItem::split
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "split_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "split_index", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "GlyphItem"
+-- returnType : Just (TInterface "Pango" "GlyphItem")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_glyph_item_split" pango_glyph_item_split :: 
     Ptr GlyphItem ->                        -- _obj : TInterface "Pango" "GlyphItem"
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- split_index : TBasicType TInt32
+    Int32 ->                                -- split_index : TBasicType TInt
     IO (Ptr GlyphItem)
 
 
diff --git a/GI/Pango/Structs/GlyphItem.hs-boot b/GI/Pango/Structs/GlyphItem.hs-boot
--- a/GI/Pango/Structs/GlyphItem.hs-boot
+++ b/GI/Pango/Structs/GlyphItem.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.GlyphItem 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/Pango/Structs/GlyphItemIter.hs b/GI/Pango/Structs/GlyphItemIter.hs
--- a/GI/Pango/Structs/GlyphItemIter.hs
+++ b/GI/Pango/Structs/GlyphItemIter.hs
@@ -88,44 +88,62 @@
 
  -- * Properties
 -- ** EndChar
+    glyphItemIterEndChar                    ,
     glyphItemIterReadEndChar                ,
+    glyphItemIterWriteEndChar               ,
 
 
 -- ** EndGlyph
+    glyphItemIterEndGlyph                   ,
     glyphItemIterReadEndGlyph               ,
+    glyphItemIterWriteEndGlyph              ,
 
 
 -- ** EndIndex
+    glyphItemIterEndIndex                   ,
     glyphItemIterReadEndIndex               ,
+    glyphItemIterWriteEndIndex              ,
 
 
 -- ** GlyphItem
+    glyphItemIterClearGlyphItem             ,
+    glyphItemIterGlyphItem                  ,
     glyphItemIterReadGlyphItem              ,
+    glyphItemIterWriteGlyphItem             ,
 
 
 -- ** StartChar
     glyphItemIterReadStartChar              ,
+    glyphItemIterStartChar                  ,
+    glyphItemIterWriteStartChar             ,
 
 
 -- ** StartGlyph
     glyphItemIterReadStartGlyph             ,
+    glyphItemIterStartGlyph                 ,
+    glyphItemIterWriteStartGlyph            ,
 
 
 -- ** StartIndex
     glyphItemIterReadStartIndex             ,
+    glyphItemIterStartIndex                 ,
+    glyphItemIterWriteStartIndex            ,
 
 
 -- ** Text
+    glyphItemIterClearText                  ,
     glyphItemIterReadText                   ,
+    glyphItemIterText                       ,
+    glyphItemIterWriteText                  ,
 
 
 
 
     ) 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
@@ -144,56 +162,239 @@
 newZeroGlyphItemIter :: MonadIO m => m GlyphItemIter
 newZeroGlyphItemIter = liftIO $ callocBoxedBytes 40 >>= wrapBoxed GlyphItemIter
 
+instance tag ~ 'AttrSet => Constructible GlyphItemIter tag where
+    new _ attrs = do
+        o <- newZeroGlyphItemIter
+        GI.Attributes.set o attrs
+        return o
+
+
 noGlyphItemIter :: Maybe GlyphItemIter
 noGlyphItemIter = Nothing
 
-glyphItemIterReadGlyphItem :: GlyphItemIter -> IO GlyphItem
-glyphItemIterReadGlyphItem s = withManagedPtr s $ \ptr -> do
+glyphItemIterReadGlyphItem :: MonadIO m => GlyphItemIter -> m (Maybe GlyphItem)
+glyphItemIterReadGlyphItem s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr GlyphItem)
-    val' <- (newBoxed GlyphItem) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newBoxed GlyphItem) val'
+        return val''
+    return result
 
-glyphItemIterReadText :: GlyphItemIter -> IO T.Text
-glyphItemIterReadText s = withManagedPtr s $ \ptr -> do
+glyphItemIterWriteGlyphItem :: MonadIO m => GlyphItemIter -> Ptr GlyphItem -> m ()
+glyphItemIterWriteGlyphItem s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr GlyphItem)
+
+glyphItemIterClearGlyphItem :: MonadIO m => GlyphItemIter -> m ()
+glyphItemIterClearGlyphItem s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr GlyphItem)
+
+data GlyphItemIterGlyphItemFieldInfo
+instance AttrInfo GlyphItemIterGlyphItemFieldInfo where
+    type AttrAllowedOps GlyphItemIterGlyphItemFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint GlyphItemIterGlyphItemFieldInfo = (~) (Ptr GlyphItem)
+    type AttrBaseTypeConstraint GlyphItemIterGlyphItemFieldInfo = (~) GlyphItemIter
+    type AttrGetType GlyphItemIterGlyphItemFieldInfo = Maybe GlyphItem
+    type AttrLabel GlyphItemIterGlyphItemFieldInfo = "glyph_item"
+    attrGet _ = glyphItemIterReadGlyphItem
+    attrSet _ = glyphItemIterWriteGlyphItem
+    attrConstruct = undefined
+    attrClear _ = glyphItemIterClearGlyphItem
+
+glyphItemIterGlyphItem :: AttrLabelProxy "glyphItem"
+glyphItemIterGlyphItem = AttrLabelProxy
+
+
+glyphItemIterReadText :: MonadIO m => GlyphItemIter -> m (Maybe T.Text)
+glyphItemIterReadText s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO CString
-    val' <- cstringToText val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- cstringToText val'
+        return val''
+    return result
 
-glyphItemIterReadStartGlyph :: GlyphItemIter -> IO Int32
-glyphItemIterReadStartGlyph s = withManagedPtr s $ \ptr -> do
+glyphItemIterWriteText :: MonadIO m => GlyphItemIter -> CString -> m ()
+glyphItemIterWriteText s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: CString)
+
+glyphItemIterClearText :: MonadIO m => GlyphItemIter -> m ()
+glyphItemIterClearText s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (nullPtr :: CString)
+
+data GlyphItemIterTextFieldInfo
+instance AttrInfo GlyphItemIterTextFieldInfo where
+    type AttrAllowedOps GlyphItemIterTextFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint GlyphItemIterTextFieldInfo = (~) CString
+    type AttrBaseTypeConstraint GlyphItemIterTextFieldInfo = (~) GlyphItemIter
+    type AttrGetType GlyphItemIterTextFieldInfo = Maybe T.Text
+    type AttrLabel GlyphItemIterTextFieldInfo = "text"
+    attrGet _ = glyphItemIterReadText
+    attrSet _ = glyphItemIterWriteText
+    attrConstruct = undefined
+    attrClear _ = glyphItemIterClearText
+
+glyphItemIterText :: AttrLabelProxy "text"
+glyphItemIterText = AttrLabelProxy
+
+
+glyphItemIterReadStartGlyph :: MonadIO m => GlyphItemIter -> m Int32
+glyphItemIterReadStartGlyph s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int32
     return val
 
-glyphItemIterReadStartIndex :: GlyphItemIter -> IO Int32
-glyphItemIterReadStartIndex s = withManagedPtr s $ \ptr -> do
+glyphItemIterWriteStartGlyph :: MonadIO m => GlyphItemIter -> Int32 -> m ()
+glyphItemIterWriteStartGlyph s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int32)
+
+data GlyphItemIterStartGlyphFieldInfo
+instance AttrInfo GlyphItemIterStartGlyphFieldInfo where
+    type AttrAllowedOps GlyphItemIterStartGlyphFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphItemIterStartGlyphFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphItemIterStartGlyphFieldInfo = (~) GlyphItemIter
+    type AttrGetType GlyphItemIterStartGlyphFieldInfo = Int32
+    type AttrLabel GlyphItemIterStartGlyphFieldInfo = "start_glyph"
+    attrGet _ = glyphItemIterReadStartGlyph
+    attrSet _ = glyphItemIterWriteStartGlyph
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphItemIterStartGlyph :: AttrLabelProxy "startGlyph"
+glyphItemIterStartGlyph = AttrLabelProxy
+
+
+glyphItemIterReadStartIndex :: MonadIO m => GlyphItemIter -> m Int32
+glyphItemIterReadStartIndex s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Int32
     return val
 
-glyphItemIterReadStartChar :: GlyphItemIter -> IO Int32
-glyphItemIterReadStartChar s = withManagedPtr s $ \ptr -> do
+glyphItemIterWriteStartIndex :: MonadIO m => GlyphItemIter -> Int32 -> m ()
+glyphItemIterWriteStartIndex s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Int32)
+
+data GlyphItemIterStartIndexFieldInfo
+instance AttrInfo GlyphItemIterStartIndexFieldInfo where
+    type AttrAllowedOps GlyphItemIterStartIndexFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphItemIterStartIndexFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphItemIterStartIndexFieldInfo = (~) GlyphItemIter
+    type AttrGetType GlyphItemIterStartIndexFieldInfo = Int32
+    type AttrLabel GlyphItemIterStartIndexFieldInfo = "start_index"
+    attrGet _ = glyphItemIterReadStartIndex
+    attrSet _ = glyphItemIterWriteStartIndex
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphItemIterStartIndex :: AttrLabelProxy "startIndex"
+glyphItemIterStartIndex = AttrLabelProxy
+
+
+glyphItemIterReadStartChar :: MonadIO m => GlyphItemIter -> m Int32
+glyphItemIterReadStartChar s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO Int32
     return val
 
-glyphItemIterReadEndGlyph :: GlyphItemIter -> IO Int32
-glyphItemIterReadEndGlyph s = withManagedPtr s $ \ptr -> do
+glyphItemIterWriteStartChar :: MonadIO m => GlyphItemIter -> Int32 -> m ()
+glyphItemIterWriteStartChar s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Int32)
+
+data GlyphItemIterStartCharFieldInfo
+instance AttrInfo GlyphItemIterStartCharFieldInfo where
+    type AttrAllowedOps GlyphItemIterStartCharFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphItemIterStartCharFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphItemIterStartCharFieldInfo = (~) GlyphItemIter
+    type AttrGetType GlyphItemIterStartCharFieldInfo = Int32
+    type AttrLabel GlyphItemIterStartCharFieldInfo = "start_char"
+    attrGet _ = glyphItemIterReadStartChar
+    attrSet _ = glyphItemIterWriteStartChar
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphItemIterStartChar :: AttrLabelProxy "startChar"
+glyphItemIterStartChar = AttrLabelProxy
+
+
+glyphItemIterReadEndGlyph :: MonadIO m => GlyphItemIter -> m Int32
+glyphItemIterReadEndGlyph s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 28) :: IO Int32
     return val
 
-glyphItemIterReadEndIndex :: GlyphItemIter -> IO Int32
-glyphItemIterReadEndIndex s = withManagedPtr s $ \ptr -> do
+glyphItemIterWriteEndGlyph :: MonadIO m => GlyphItemIter -> Int32 -> m ()
+glyphItemIterWriteEndGlyph s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 28) (val :: Int32)
+
+data GlyphItemIterEndGlyphFieldInfo
+instance AttrInfo GlyphItemIterEndGlyphFieldInfo where
+    type AttrAllowedOps GlyphItemIterEndGlyphFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphItemIterEndGlyphFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphItemIterEndGlyphFieldInfo = (~) GlyphItemIter
+    type AttrGetType GlyphItemIterEndGlyphFieldInfo = Int32
+    type AttrLabel GlyphItemIterEndGlyphFieldInfo = "end_glyph"
+    attrGet _ = glyphItemIterReadEndGlyph
+    attrSet _ = glyphItemIterWriteEndGlyph
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphItemIterEndGlyph :: AttrLabelProxy "endGlyph"
+glyphItemIterEndGlyph = AttrLabelProxy
+
+
+glyphItemIterReadEndIndex :: MonadIO m => GlyphItemIter -> m Int32
+glyphItemIterReadEndIndex s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO Int32
     return val
 
-glyphItemIterReadEndChar :: GlyphItemIter -> IO Int32
-glyphItemIterReadEndChar s = withManagedPtr s $ \ptr -> do
+glyphItemIterWriteEndIndex :: MonadIO m => GlyphItemIter -> Int32 -> m ()
+glyphItemIterWriteEndIndex s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Int32)
+
+data GlyphItemIterEndIndexFieldInfo
+instance AttrInfo GlyphItemIterEndIndexFieldInfo where
+    type AttrAllowedOps GlyphItemIterEndIndexFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphItemIterEndIndexFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphItemIterEndIndexFieldInfo = (~) GlyphItemIter
+    type AttrGetType GlyphItemIterEndIndexFieldInfo = Int32
+    type AttrLabel GlyphItemIterEndIndexFieldInfo = "end_index"
+    attrGet _ = glyphItemIterReadEndIndex
+    attrSet _ = glyphItemIterWriteEndIndex
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphItemIterEndIndex :: AttrLabelProxy "endIndex"
+glyphItemIterEndIndex = AttrLabelProxy
+
+
+glyphItemIterReadEndChar :: MonadIO m => GlyphItemIter -> m Int32
+glyphItemIterReadEndChar s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 36) :: IO Int32
     return val
 
+glyphItemIterWriteEndChar :: MonadIO m => GlyphItemIter -> Int32 -> m ()
+glyphItemIterWriteEndChar s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 36) (val :: Int32)
+
+data GlyphItemIterEndCharFieldInfo
+instance AttrInfo GlyphItemIterEndCharFieldInfo where
+    type AttrAllowedOps GlyphItemIterEndCharFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphItemIterEndCharFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphItemIterEndCharFieldInfo = (~) GlyphItemIter
+    type AttrGetType GlyphItemIterEndCharFieldInfo = Int32
+    type AttrLabel GlyphItemIterEndCharFieldInfo = "end_char"
+    attrGet _ = glyphItemIterReadEndChar
+    attrSet _ = glyphItemIterWriteEndChar
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphItemIterEndChar :: AttrLabelProxy "endChar"
+glyphItemIterEndChar = AttrLabelProxy
+
+
+
+type instance AttributeList GlyphItemIter = GlyphItemIterAttributeList
+type GlyphItemIterAttributeList = ('[ '("glyphItem", GlyphItemIterGlyphItemFieldInfo), '("text", GlyphItemIterTextFieldInfo), '("startGlyph", GlyphItemIterStartGlyphFieldInfo), '("startIndex", GlyphItemIterStartIndexFieldInfo), '("startChar", GlyphItemIterStartCharFieldInfo), '("endGlyph", GlyphItemIterEndGlyphFieldInfo), '("endIndex", GlyphItemIterEndIndexFieldInfo), '("endChar", GlyphItemIterEndCharFieldInfo)] :: [(Symbol, *)])
+
 -- method GlyphItemIter::copy
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "GlyphItemIter"
+-- returnType : Just (TInterface "Pango" "GlyphItemIter")
 -- throws : False
 -- Skip return : False
 
@@ -205,24 +406,25 @@
 glyphItemIterCopy ::
     (MonadIO m) =>
     GlyphItemIter                           -- _obj
-    -> m GlyphItemIter                      -- result
+    -> m (Maybe GlyphItemIter)              -- result
 glyphItemIterCopy _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_glyph_item_iter_copy _obj'
-    checkUnexpectedReturnNULL "pango_glyph_item_iter_copy" result
-    result' <- (wrapBoxed GlyphItemIter) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed GlyphItemIter) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data GlyphItemIterCopyMethodInfo
-instance (signature ~ (m GlyphItemIter), MonadIO m) => MethodInfo GlyphItemIterCopyMethodInfo GlyphItemIter signature where
+instance (signature ~ (m (Maybe GlyphItemIter)), MonadIO m) => MethodInfo GlyphItemIterCopyMethodInfo GlyphItemIter signature where
     overloadedMethod _ = glyphItemIterCopy
 
 -- method GlyphItemIter::free
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItemIter", 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
 
@@ -249,7 +451,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyph_item", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", 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
 
@@ -285,7 +487,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyph_item", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", 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
 
@@ -321,7 +523,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItemIter", 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
 
@@ -349,7 +551,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphItemIter", 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
 
diff --git a/GI/Pango/Structs/GlyphItemIter.hs-boot b/GI/Pango/Structs/GlyphItemIter.hs-boot
--- a/GI/Pango/Structs/GlyphItemIter.hs-boot
+++ b/GI/Pango/Structs/GlyphItemIter.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.GlyphItemIter 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/Pango/Structs/GlyphString.hs b/GI/Pango/Structs/GlyphString.hs
--- a/GI/Pango/Structs/GlyphString.hs
+++ b/GI/Pango/Structs/GlyphString.hs
@@ -74,20 +74,24 @@
 
  -- * Properties
 -- ** LogClusters
+    glyphStringLogClusters                  ,
     glyphStringReadLogClusters              ,
+    glyphStringWriteLogClusters             ,
 
 
 -- ** NumGlyphs
+    glyphStringNumGlyphs                    ,
     glyphStringReadNumGlyphs                ,
+    glyphStringWriteNumGlyphs               ,
 
 
 
 
     ) 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
@@ -106,26 +110,76 @@
 newZeroGlyphString :: MonadIO m => m GlyphString
 newZeroGlyphString = liftIO $ callocBoxedBytes 32 >>= wrapBoxed GlyphString
 
+instance tag ~ 'AttrSet => Constructible GlyphString tag where
+    new _ attrs = do
+        o <- newZeroGlyphString
+        GI.Attributes.set o attrs
+        return o
+
+
 noGlyphString :: Maybe GlyphString
 noGlyphString = Nothing
 
-glyphStringReadNumGlyphs :: GlyphString -> IO Int32
-glyphStringReadNumGlyphs s = withManagedPtr s $ \ptr -> do
+glyphStringReadNumGlyphs :: MonadIO m => GlyphString -> m Int32
+glyphStringReadNumGlyphs s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int32
     return val
 
--- XXX Skipped getter for "GlyphString:glyphs" :: Not implemented: "Don't know how to unpack C array of type TCArray False (-1) 0 (TInterface \"Pango\" \"GlyphInfo\")"
+glyphStringWriteNumGlyphs :: MonadIO m => GlyphString -> Int32 -> m ()
+glyphStringWriteNumGlyphs s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int32)
 
-glyphStringReadLogClusters :: GlyphString -> IO Int32
-glyphStringReadLogClusters s = withManagedPtr s $ \ptr -> do
+data GlyphStringNumGlyphsFieldInfo
+instance AttrInfo GlyphStringNumGlyphsFieldInfo where
+    type AttrAllowedOps GlyphStringNumGlyphsFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphStringNumGlyphsFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphStringNumGlyphsFieldInfo = (~) GlyphString
+    type AttrGetType GlyphStringNumGlyphsFieldInfo = Int32
+    type AttrLabel GlyphStringNumGlyphsFieldInfo = "num_glyphs"
+    attrGet _ = glyphStringReadNumGlyphs
+    attrSet _ = glyphStringWriteNumGlyphs
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphStringNumGlyphs :: AttrLabelProxy "numGlyphs"
+glyphStringNumGlyphs = AttrLabelProxy
+
+
+-- XXX Skipped attribute for "GlyphString:glyphs" :: Not implemented: "Don't know how to unpack C array of type TCArray False (-1) 0 (TInterface \"Pango\" \"GlyphInfo\")"
+glyphStringReadLogClusters :: MonadIO m => GlyphString -> m Int32
+glyphStringReadLogClusters s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Int32
     return val
 
+glyphStringWriteLogClusters :: MonadIO m => GlyphString -> Int32 -> m ()
+glyphStringWriteLogClusters s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Int32)
+
+data GlyphStringLogClustersFieldInfo
+instance AttrInfo GlyphStringLogClustersFieldInfo where
+    type AttrAllowedOps GlyphStringLogClustersFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphStringLogClustersFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint GlyphStringLogClustersFieldInfo = (~) GlyphString
+    type AttrGetType GlyphStringLogClustersFieldInfo = Int32
+    type AttrLabel GlyphStringLogClustersFieldInfo = "log_clusters"
+    attrGet _ = glyphStringReadLogClusters
+    attrSet _ = glyphStringWriteLogClusters
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphStringLogClusters :: AttrLabelProxy "logClusters"
+glyphStringLogClusters = AttrLabelProxy
+
+
+
+type instance AttributeList GlyphString = GlyphStringAttributeList
+type GlyphStringAttributeList = ('[ '("numGlyphs", GlyphStringNumGlyphsFieldInfo), '("logClusters", GlyphStringLogClustersFieldInfo)] :: [(Symbol, *)])
+
 -- method GlyphString::new
 -- method type : Constructor
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Pango" "GlyphString"
+-- returnType : Just (TInterface "Pango" "GlyphString")
 -- throws : False
 -- Skip return : False
 
@@ -146,7 +200,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "GlyphString"
+-- returnType : Just (TInterface "Pango" "GlyphString")
 -- throws : False
 -- Skip return : False
 
@@ -158,24 +212,25 @@
 glyphStringCopy ::
     (MonadIO m) =>
     GlyphString                             -- _obj
-    -> m GlyphString                        -- result
+    -> m (Maybe GlyphString)                -- result
 glyphStringCopy _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_glyph_string_copy _obj'
-    checkUnexpectedReturnNULL "pango_glyph_string_copy" result
-    result' <- (wrapBoxed GlyphString) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed GlyphString) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data GlyphStringCopyMethodInfo
-instance (signature ~ (m GlyphString), MonadIO m) => MethodInfo GlyphStringCopyMethodInfo GlyphString signature where
+instance (signature ~ (m (Maybe GlyphString)), MonadIO m) => MethodInfo GlyphStringCopyMethodInfo GlyphString signature where
     overloadedMethod _ = glyphStringCopy
 
 -- method GlyphString::extents
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -210,16 +265,16 @@
 
 -- method GlyphString::extents_range
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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 "pango_glyph_string_extents_range" pango_glyph_string_extents_range :: 
     Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
-    Int32 ->                                -- start : TBasicType TInt32
-    Int32 ->                                -- end : TBasicType TInt32
+    Int32 ->                                -- start : TBasicType TInt
+    Int32 ->                                -- end : TBasicType TInt
     Ptr Font ->                             -- font : TInterface "Pango" "Font"
     Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
     Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
@@ -253,7 +308,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", 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
 
@@ -278,18 +333,18 @@
 
 -- method GlyphString::get_logical_widths
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "embedding_level", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "logical_widths", argType = TCArray False (-1) (-1) (TBasicType TInt32), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "embedding_level", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "logical_widths", argType = TCArray False (-1) (-1) (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 "pango_glyph_string_get_logical_widths" pango_glyph_string_get_logical_widths :: 
     Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
-    Int32 ->                                -- embedding_level : TBasicType TInt32
-    Ptr Int32 ->                            -- logical_widths : TCArray False (-1) (-1) (TBasicType TInt32)
+    Int32 ->                                -- length : TBasicType TInt
+    Int32 ->                                -- embedding_level : TBasicType TInt
+    Ptr Int32 ->                            -- logical_widths : TCArray False (-1) (-1) (TBasicType TInt)
     IO ()
 
 
@@ -317,7 +372,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", 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
 
@@ -342,20 +397,20 @@
 
 -- method GlyphString::index_to_x
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "trailing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_pos", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "trailing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_pos", 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 "pango_glyph_string_index_to_x" pango_glyph_string_index_to_x :: 
     Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
-    Int32 ->                                -- index_ : TBasicType TInt32
+    Int32 ->                                -- index_ : TBasicType TInt
     CInt ->                                 -- trailing : TBasicType TBoolean
-    Ptr Int32 ->                            -- x_pos : TBasicType TInt32
+    Ptr Int32 ->                            -- x_pos : TBasicType TInt
     IO ()
 
 
@@ -365,16 +420,16 @@
     -> T.Text                               -- text
     -> Int32                                -- length_
     -> Analysis                             -- analysis
-    -> Int32                                -- index
+    -> Int32                                -- index_
     -> Bool                                 -- trailing
     -> m (Int32)                            -- result
-glyphStringIndexToX _obj text length_ analysis index trailing = liftIO $ do
+glyphStringIndexToX _obj text length_ analysis index_ trailing = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     text' <- textToCString text
     let analysis' = unsafeManagedPtrGetPtr analysis
     let trailing' = (fromIntegral . fromEnum) trailing
     xPos <- allocMem :: IO (Ptr Int32)
-    pango_glyph_string_index_to_x _obj' text' length_ analysis' index trailing' xPos
+    pango_glyph_string_index_to_x _obj' text' length_ analysis' index_ trailing' xPos
     xPos' <- peek xPos
     touchManagedPtr _obj
     touchManagedPtr analysis
@@ -388,15 +443,15 @@
 
 -- method GlyphString::set_size
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_len", 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 "pango_glyph_string_set_size" pango_glyph_string_set_size :: 
     Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
-    Int32 ->                                -- new_len : TBasicType TInt32
+    Int32 ->                                -- new_len : TBasicType TInt
     IO ()
 
 
@@ -417,20 +472,20 @@
 
 -- method GlyphString::x_to_index
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_pos", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "trailing", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, 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 = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_pos", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "trailing", 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 "pango_glyph_string_x_to_index" pango_glyph_string_x_to_index :: 
     Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
     CString ->                              -- text : TBasicType TUTF8
-    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt
     Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
-    Int32 ->                                -- x_pos : TBasicType TInt32
-    Ptr Int32 ->                            -- index_ : TBasicType TInt32
-    Ptr Int32 ->                            -- trailing : TBasicType TInt32
+    Int32 ->                                -- x_pos : TBasicType TInt
+    Ptr Int32 ->                            -- index_ : TBasicType TInt
+    Ptr Int32 ->                            -- trailing : TBasicType TInt
     IO ()
 
 
@@ -446,17 +501,17 @@
     let _obj' = unsafeManagedPtrGetPtr _obj
     text' <- textToCString text
     let analysis' = unsafeManagedPtrGetPtr analysis
-    index <- allocMem :: IO (Ptr Int32)
+    index_ <- allocMem :: IO (Ptr Int32)
     trailing <- allocMem :: IO (Ptr Int32)
-    pango_glyph_string_x_to_index _obj' text' length_ analysis' xPos index trailing
-    index' <- peek index
+    pango_glyph_string_x_to_index _obj' text' length_ analysis' xPos index_ trailing
+    index_' <- peek index_
     trailing' <- peek trailing
     touchManagedPtr _obj
     touchManagedPtr analysis
     freeMem text'
-    freeMem index
+    freeMem index_
     freeMem trailing
-    return (index', trailing')
+    return (index_', trailing')
 
 data GlyphStringXToIndexMethodInfo
 instance (signature ~ (T.Text -> Int32 -> Analysis -> Int32 -> m (Int32,Int32)), MonadIO m) => MethodInfo GlyphStringXToIndexMethodInfo GlyphString signature where
diff --git a/GI/Pango/Structs/GlyphString.hs-boot b/GI/Pango/Structs/GlyphString.hs-boot
--- a/GI/Pango/Structs/GlyphString.hs-boot
+++ b/GI/Pango/Structs/GlyphString.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.GlyphString 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/Pango/Structs/GlyphVisAttr.hs b/GI/Pango/Structs/GlyphVisAttr.hs
--- a/GI/Pango/Structs/GlyphVisAttr.hs
+++ b/GI/Pango/Structs/GlyphVisAttr.hs
@@ -21,16 +21,18 @@
 
  -- * Properties
 -- ** IsClusterStart
+    glyphVisAttrIsClusterStart              ,
     glyphVisAttrReadIsClusterStart          ,
+    glyphVisAttrWriteIsClusterStart         ,
 
 
 
 
     ) 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
@@ -43,13 +45,44 @@
 newZeroGlyphVisAttr :: MonadIO m => m GlyphVisAttr
 newZeroGlyphVisAttr = liftIO $ callocBytes 4 >>= wrapPtr GlyphVisAttr
 
+instance tag ~ 'AttrSet => Constructible GlyphVisAttr tag where
+    new _ attrs = do
+        o <- newZeroGlyphVisAttr
+        GI.Attributes.set o attrs
+        return o
+
+
 noGlyphVisAttr :: Maybe GlyphVisAttr
 noGlyphVisAttr = Nothing
 
-glyphVisAttrReadIsClusterStart :: GlyphVisAttr -> IO Word32
-glyphVisAttrReadIsClusterStart s = withManagedPtr s $ \ptr -> do
+glyphVisAttrReadIsClusterStart :: MonadIO m => GlyphVisAttr -> m Word32
+glyphVisAttrReadIsClusterStart s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word32
     return val
+
+glyphVisAttrWriteIsClusterStart :: MonadIO m => GlyphVisAttr -> Word32 -> m ()
+glyphVisAttrWriteIsClusterStart s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word32)
+
+data GlyphVisAttrIsClusterStartFieldInfo
+instance AttrInfo GlyphVisAttrIsClusterStartFieldInfo where
+    type AttrAllowedOps GlyphVisAttrIsClusterStartFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint GlyphVisAttrIsClusterStartFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint GlyphVisAttrIsClusterStartFieldInfo = (~) GlyphVisAttr
+    type AttrGetType GlyphVisAttrIsClusterStartFieldInfo = Word32
+    type AttrLabel GlyphVisAttrIsClusterStartFieldInfo = "is_cluster_start"
+    attrGet _ = glyphVisAttrReadIsClusterStart
+    attrSet _ = glyphVisAttrWriteIsClusterStart
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+glyphVisAttrIsClusterStart :: AttrLabelProxy "isClusterStart"
+glyphVisAttrIsClusterStart = AttrLabelProxy
+
+
+
+type instance AttributeList GlyphVisAttr = GlyphVisAttrAttributeList
+type GlyphVisAttrAttributeList = ('[ '("isClusterStart", GlyphVisAttrIsClusterStartFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveGlyphVisAttrMethod (t :: Symbol) (o :: *) :: * where
     ResolveGlyphVisAttrMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/GlyphVisAttr.hs-boot b/GI/Pango/Structs/GlyphVisAttr.hs-boot
--- a/GI/Pango/Structs/GlyphVisAttr.hs-boot
+++ b/GI/Pango/Structs/GlyphVisAttr.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.GlyphVisAttr 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/Pango/Structs/IncludedModule.hs b/GI/Pango/Structs/IncludedModule.hs
--- a/GI/Pango/Structs/IncludedModule.hs
+++ b/GI/Pango/Structs/IncludedModule.hs
@@ -21,9 +21,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
@@ -36,14 +36,22 @@
 newZeroIncludedModule :: MonadIO m => m IncludedModule
 newZeroIncludedModule = liftIO $ callocBytes 32 >>= wrapPtr IncludedModule
 
+instance tag ~ 'AttrSet => Constructible IncludedModule tag where
+    new _ attrs = do
+        o <- newZeroIncludedModule
+        GI.Attributes.set o attrs
+        return o
+
+
 noIncludedModule :: Maybe IncludedModule
 noIncludedModule = Nothing
 
--- XXX Skipped getter for "IncludedModule:list" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
-
--- XXX Skipped getter for "IncludedModule:init" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+-- XXX Skipped attribute for "IncludedModule:list" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+-- XXX Skipped attribute for "IncludedModule:init" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+-- XXX Skipped attribute for "IncludedModule:exit" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
 
--- XXX Skipped getter for "IncludedModule:exit" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+type instance AttributeList IncludedModule = IncludedModuleAttributeList
+type IncludedModuleAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveIncludedModuleMethod (t :: Symbol) (o :: *) :: * where
     ResolveIncludedModuleMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/IncludedModule.hs-boot b/GI/Pango/Structs/IncludedModule.hs-boot
--- a/GI/Pango/Structs/IncludedModule.hs-boot
+++ b/GI/Pango/Structs/IncludedModule.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.IncludedModule 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/Pango/Structs/Item.hs b/GI/Pango/Structs/Item.hs
--- a/GI/Pango/Structs/Item.hs
+++ b/GI/Pango/Structs/Item.hs
@@ -41,28 +41,37 @@
 
  -- * Properties
 -- ** Analysis
+    itemAnalysis                            ,
+    itemClearAnalysis                       ,
     itemReadAnalysis                        ,
+    itemWriteAnalysis                       ,
 
 
 -- ** Length
+    itemLength                              ,
     itemReadLength                          ,
+    itemWriteLength                         ,
 
 
 -- ** NumChars
+    itemNumChars                            ,
     itemReadNumChars                        ,
+    itemWriteNumChars                       ,
 
 
 -- ** Offset
+    itemOffset                              ,
     itemReadOffset                          ,
+    itemWriteOffset                         ,
 
 
 
 
     ) 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,35 +90,132 @@
 newZeroItem :: MonadIO m => m Item
 newZeroItem = liftIO $ callocBoxedBytes 64 >>= wrapBoxed Item
 
+instance tag ~ 'AttrSet => Constructible Item tag where
+    new _ attrs = do
+        o <- newZeroItem
+        GI.Attributes.set o attrs
+        return o
+
+
 noItem :: Maybe Item
 noItem = Nothing
 
-itemReadOffset :: Item -> IO Int32
-itemReadOffset s = withManagedPtr s $ \ptr -> do
+itemReadOffset :: MonadIO m => Item -> m Int32
+itemReadOffset s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int32
     return val
 
-itemReadLength :: Item -> IO Int32
-itemReadLength s = withManagedPtr s $ \ptr -> do
+itemWriteOffset :: MonadIO m => Item -> Int32 -> m ()
+itemWriteOffset s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int32)
+
+data ItemOffsetFieldInfo
+instance AttrInfo ItemOffsetFieldInfo where
+    type AttrAllowedOps ItemOffsetFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ItemOffsetFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint ItemOffsetFieldInfo = (~) Item
+    type AttrGetType ItemOffsetFieldInfo = Int32
+    type AttrLabel ItemOffsetFieldInfo = "offset"
+    attrGet _ = itemReadOffset
+    attrSet _ = itemWriteOffset
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+itemOffset :: AttrLabelProxy "offset"
+itemOffset = AttrLabelProxy
+
+
+itemReadLength :: MonadIO m => Item -> m Int32
+itemReadLength s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO Int32
     return val
 
-itemReadNumChars :: Item -> IO Int32
-itemReadNumChars s = withManagedPtr s $ \ptr -> do
+itemWriteLength :: MonadIO m => Item -> Int32 -> m ()
+itemWriteLength s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (val :: Int32)
+
+data ItemLengthFieldInfo
+instance AttrInfo ItemLengthFieldInfo where
+    type AttrAllowedOps ItemLengthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ItemLengthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint ItemLengthFieldInfo = (~) Item
+    type AttrGetType ItemLengthFieldInfo = Int32
+    type AttrLabel ItemLengthFieldInfo = "length"
+    attrGet _ = itemReadLength
+    attrSet _ = itemWriteLength
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+itemLength :: AttrLabelProxy "length"
+itemLength = AttrLabelProxy
+
+
+itemReadNumChars :: MonadIO m => Item -> m Int32
+itemReadNumChars s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Int32
     return val
 
-itemReadAnalysis :: Item -> IO Analysis
-itemReadAnalysis s = withManagedPtr s $ \ptr -> do
+itemWriteNumChars :: MonadIO m => Item -> Int32 -> m ()
+itemWriteNumChars s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Int32)
+
+data ItemNumCharsFieldInfo
+instance AttrInfo ItemNumCharsFieldInfo where
+    type AttrAllowedOps ItemNumCharsFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ItemNumCharsFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint ItemNumCharsFieldInfo = (~) Item
+    type AttrGetType ItemNumCharsFieldInfo = Int32
+    type AttrLabel ItemNumCharsFieldInfo = "num_chars"
+    attrGet _ = itemReadNumChars
+    attrSet _ = itemWriteNumChars
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+itemNumChars :: AttrLabelProxy "numChars"
+itemNumChars = AttrLabelProxy
+
+
+itemReadAnalysis :: MonadIO m => Item -> m (Maybe Analysis)
+itemReadAnalysis s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr Analysis)
-    val' <- (newPtr 48 Analysis) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newPtr 48 Analysis) val'
+        return val''
+    return result
 
+itemWriteAnalysis :: MonadIO m => Item -> Ptr Analysis -> m ()
+itemWriteAnalysis s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Ptr Analysis)
+
+itemClearAnalysis :: MonadIO m => Item -> m ()
+itemClearAnalysis s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: Ptr Analysis)
+
+data ItemAnalysisFieldInfo
+instance AttrInfo ItemAnalysisFieldInfo where
+    type AttrAllowedOps ItemAnalysisFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint ItemAnalysisFieldInfo = (~) (Ptr Analysis)
+    type AttrBaseTypeConstraint ItemAnalysisFieldInfo = (~) Item
+    type AttrGetType ItemAnalysisFieldInfo = Maybe Analysis
+    type AttrLabel ItemAnalysisFieldInfo = "analysis"
+    attrGet _ = itemReadAnalysis
+    attrSet _ = itemWriteAnalysis
+    attrConstruct = undefined
+    attrClear _ = itemClearAnalysis
+
+itemAnalysis :: AttrLabelProxy "analysis"
+itemAnalysis = AttrLabelProxy
+
+
+
+type instance AttributeList Item = ItemAttributeList
+type ItemAttributeList = ('[ '("offset", ItemOffsetFieldInfo), '("length", ItemLengthFieldInfo), '("numChars", ItemNumCharsFieldInfo), '("analysis", ItemAnalysisFieldInfo)] :: [(Symbol, *)])
+
 -- method Item::new
 -- method type : Constructor
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Pango" "Item"
+-- returnType : Just (TInterface "Pango" "Item")
 -- throws : False
 -- Skip return : False
 
@@ -130,7 +236,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Item", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Item"
+-- returnType : Just (TInterface "Pango" "Item")
 -- throws : False
 -- Skip return : False
 
@@ -142,24 +248,25 @@
 itemCopy ::
     (MonadIO m) =>
     Item                                    -- _obj
-    -> m Item                               -- result
+    -> m (Maybe Item)                       -- result
 itemCopy _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_item_copy _obj'
-    checkUnexpectedReturnNULL "pango_item_copy" result
-    result' <- (wrapBoxed Item) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed Item) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data ItemCopyMethodInfo
-instance (signature ~ (m Item), MonadIO m) => MethodInfo ItemCopyMethodInfo Item signature where
+instance (signature ~ (m (Maybe Item)), MonadIO m) => MethodInfo ItemCopyMethodInfo Item signature where
     overloadedMethod _ = itemCopy
 
 -- method Item::free
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Item", 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
 
@@ -184,16 +291,16 @@
 
 -- method Item::split
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Item", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "split_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "split_offset", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Item", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "split_index", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "split_offset", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Item"
+-- returnType : Just (TInterface "Pango" "Item")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_item_split" pango_item_split :: 
     Ptr Item ->                             -- _obj : TInterface "Pango" "Item"
-    Int32 ->                                -- split_index : TBasicType TInt32
-    Int32 ->                                -- split_offset : TBasicType TInt32
+    Int32 ->                                -- split_index : TBasicType TInt
+    Int32 ->                                -- split_offset : TBasicType TInt
     IO (Ptr Item)
 
 
diff --git a/GI/Pango/Structs/Item.hs-boot b/GI/Pango/Structs/Item.hs-boot
--- a/GI/Pango/Structs/Item.hs-boot
+++ b/GI/Pango/Structs/Item.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.Item 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/Pango/Structs/Language.hs b/GI/Pango/Structs/Language.hs
--- a/GI/Pango/Structs/Language.hs
+++ b/GI/Pango/Structs/Language.hs
@@ -58,9 +58,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
@@ -78,11 +78,15 @@
 noLanguage :: Maybe Language
 noLanguage = Nothing
 
+
+type instance AttributeList Language = LanguageAttributeList
+type LanguageAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method Language::get_sample_string
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", 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
 
@@ -109,43 +113,44 @@
 
 -- method Language::get_scripts
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "num_scripts", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "num_scripts", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferEverything}]
--- returnType : TCArray False (-1) 1 (TInterface "Pango" "Script")
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "num_scripts", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "num_scripts", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferEverything}]
+-- returnType : Just (TCArray False (-1) 1 (TInterface "Pango" "Script"))
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_language_get_scripts" pango_language_get_scripts :: 
     Ptr Language ->                         -- _obj : TInterface "Pango" "Language"
-    Ptr Int32 ->                            -- num_scripts : TBasicType TInt32
+    Ptr Int32 ->                            -- num_scripts : TBasicType TInt
     IO (Ptr CUInt)
 
 
 languageGetScripts ::
     (MonadIO m) =>
     Language                                -- _obj
-    -> m [Script]                           -- result
+    -> m (Maybe [Script])                   -- result
 languageGetScripts _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     numScripts <- allocMem :: IO (Ptr Int32)
     result <- pango_language_get_scripts _obj' numScripts
     numScripts' <- peek numScripts
-    checkUnexpectedReturnNULL "pango_language_get_scripts" result
-    result' <- (unpackStorableArrayWithLength numScripts') result
-    let result'' = map (toEnum . fromIntegral) result'
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (unpackStorableArrayWithLength numScripts') result'
+        let result''' = map (toEnum . fromIntegral) result''
+        return result'''
     touchManagedPtr _obj
     freeMem numScripts
-    return result''
+    return maybeResult
 
 data LanguageGetScriptsMethodInfo
-instance (signature ~ (m [Script]), MonadIO m) => MethodInfo LanguageGetScriptsMethodInfo Language signature where
+instance (signature ~ (m (Maybe [Script])), MonadIO m) => MethodInfo LanguageGetScriptsMethodInfo Language signature where
     overloadedMethod _ = languageGetScripts
 
 -- method Language::includes_script
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "script", argType = TInterface "Pango" "Script", 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
 
@@ -176,7 +181,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "range_list", 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
 
@@ -208,7 +213,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", 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
 
@@ -237,7 +242,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "language", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Language"
+-- returnType : Just (TInterface "Pango" "Language")
 -- throws : False
 -- Skip return : False
 
@@ -249,7 +254,7 @@
 languageFromString ::
     (MonadIO m) =>
     Maybe (T.Text)                          -- language
-    -> m Language                           -- result
+    -> m (Maybe Language)                   -- result
 languageFromString language = liftIO $ do
     maybeLanguage <- case language of
         Nothing -> return nullPtr
@@ -257,16 +262,17 @@
             jLanguage' <- textToCString jLanguage
             return jLanguage'
     result <- pango_language_from_string maybeLanguage
-    checkUnexpectedReturnNULL "pango_language_from_string" result
-    result' <- (newBoxed Language) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed Language) result'
+        return result''
     freeMem maybeLanguage
-    return result'
+    return maybeResult
 
 -- method Language::get_default
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "Pango" "Language"
+-- returnType : Just (TInterface "Pango" "Language")
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Pango/Structs/Language.hs-boot b/GI/Pango/Structs/Language.hs-boot
--- a/GI/Pango/Structs/Language.hs-boot
+++ b/GI/Pango/Structs/Language.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.Language 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/Pango/Structs/LayoutIter.hs b/GI/Pango/Structs/LayoutIter.hs
--- a/GI/Pango/Structs/LayoutIter.hs
+++ b/GI/Pango/Structs/LayoutIter.hs
@@ -125,9 +125,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,11 +145,15 @@
 noLayoutIter :: Maybe LayoutIter
 noLayoutIter = Nothing
 
+
+type instance AttributeList LayoutIter = LayoutIterAttributeList
+type LayoutIterAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method LayoutIter::at_last_line
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", 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
 
@@ -177,7 +181,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "LayoutIter"
+-- returnType : Just (TInterface "Pango" "LayoutIter")
 -- throws : False
 -- Skip return : False
 
@@ -189,24 +193,25 @@
 layoutIterCopy ::
     (MonadIO m) =>
     LayoutIter                              -- _obj
-    -> m LayoutIter                         -- result
+    -> m (Maybe LayoutIter)                 -- result
 layoutIterCopy _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_layout_iter_copy _obj'
-    checkUnexpectedReturnNULL "pango_layout_iter_copy" result
-    result' <- (wrapBoxed LayoutIter) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed LayoutIter) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data LayoutIterCopyMethodInfo
-instance (signature ~ (m LayoutIter), MonadIO m) => MethodInfo LayoutIterCopyMethodInfo LayoutIter signature where
+instance (signature ~ (m (Maybe LayoutIter)), MonadIO m) => MethodInfo LayoutIterCopyMethodInfo LayoutIter signature where
     overloadedMethod _ = layoutIterCopy
 
 -- method LayoutIter::free
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", 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
 
@@ -233,7 +238,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", 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
 
@@ -260,7 +265,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -290,7 +295,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -323,7 +328,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", 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
 
@@ -350,7 +355,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Layout"
+-- returnType : Just (TInterface "Pango" "Layout")
 -- throws : False
 -- Skip return : False
 
@@ -379,7 +384,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -412,7 +417,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "LayoutLine"
+-- returnType : Just (TInterface "Pango" "LayoutLine")
 -- throws : False
 -- Skip return : False
 
@@ -441,7 +446,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -474,7 +479,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "LayoutLine"
+-- returnType : Just (TInterface "Pango" "LayoutLine")
 -- throws : False
 -- Skip return : False
 
@@ -501,16 +506,16 @@
 
 -- method LayoutIter::get_line_yrange
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y0_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y1_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y0_", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y1_", 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 "pango_layout_iter_get_line_yrange" pango_layout_iter_get_line_yrange :: 
     Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
-    Ptr Int32 ->                            -- y0_ : TBasicType TInt32
-    Ptr Int32 ->                            -- y1_ : TBasicType TInt32
+    Ptr Int32 ->                            -- y0_ : TBasicType TInt
+    Ptr Int32 ->                            -- y1_ : TBasicType TInt
     IO ()
 
 
@@ -520,15 +525,15 @@
     -> m (Int32,Int32)                      -- result
 layoutIterGetLineYrange _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
-    y0 <- allocMem :: IO (Ptr Int32)
-    y1 <- allocMem :: IO (Ptr Int32)
-    pango_layout_iter_get_line_yrange _obj' y0 y1
-    y0' <- peek y0
-    y1' <- peek y1
+    y0_ <- allocMem :: IO (Ptr Int32)
+    y1_ <- allocMem :: IO (Ptr Int32)
+    pango_layout_iter_get_line_yrange _obj' y0_ y1_
+    y0_' <- peek y0_
+    y1_' <- peek y1_
     touchManagedPtr _obj
-    freeMem y0
-    freeMem y1
-    return (y0', y1')
+    freeMem y0_
+    freeMem y1_
+    return (y0_', y1_')
 
 data LayoutIterGetLineYrangeMethodInfo
 instance (signature ~ (m (Int32,Int32)), MonadIO m) => MethodInfo LayoutIterGetLineYrangeMethodInfo LayoutIter signature where
@@ -538,7 +543,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "GlyphItem"
+-- returnType : Just (TInterface "Pango" "GlyphItem")
 -- throws : False
 -- Skip return : False
 
@@ -550,24 +555,25 @@
 layoutIterGetRun ::
     (MonadIO m) =>
     LayoutIter                              -- _obj
-    -> m GlyphItem                          -- result
+    -> m (Maybe GlyphItem)                  -- result
 layoutIterGetRun _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_layout_iter_get_run _obj'
-    checkUnexpectedReturnNULL "pango_layout_iter_get_run" result
-    result' <- (newBoxed GlyphItem) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed GlyphItem) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data LayoutIterGetRunMethodInfo
-instance (signature ~ (m GlyphItem), MonadIO m) => MethodInfo LayoutIterGetRunMethodInfo LayoutIter signature where
+instance (signature ~ (m (Maybe GlyphItem)), MonadIO m) => MethodInfo LayoutIterGetRunMethodInfo LayoutIter signature where
     overloadedMethod _ = layoutIterGetRun
 
 -- method LayoutIter::get_run_extents
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -600,7 +606,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "GlyphItem"
+-- returnType : Just (TInterface "Pango" "GlyphItem")
 -- throws : False
 -- Skip return : False
 
@@ -612,24 +618,25 @@
 layoutIterGetRunReadonly ::
     (MonadIO m) =>
     LayoutIter                              -- _obj
-    -> m GlyphItem                          -- result
+    -> m (Maybe GlyphItem)                  -- result
 layoutIterGetRunReadonly _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_layout_iter_get_run_readonly _obj'
-    checkUnexpectedReturnNULL "pango_layout_iter_get_run_readonly" result
-    result' <- (newBoxed GlyphItem) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (newBoxed GlyphItem) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data LayoutIterGetRunReadonlyMethodInfo
-instance (signature ~ (m GlyphItem), MonadIO m) => MethodInfo LayoutIterGetRunReadonlyMethodInfo LayoutIter signature where
+instance (signature ~ (m (Maybe GlyphItem)), MonadIO m) => MethodInfo LayoutIterGetRunReadonlyMethodInfo LayoutIter signature where
     overloadedMethod _ = layoutIterGetRunReadonly
 
 -- method LayoutIter::next_char
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", 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
 
@@ -657,7 +664,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", 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
 
@@ -685,7 +692,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", 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
 
@@ -713,7 +720,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutIter", 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
 
diff --git a/GI/Pango/Structs/LayoutIter.hs-boot b/GI/Pango/Structs/LayoutIter.hs-boot
--- a/GI/Pango/Structs/LayoutIter.hs-boot
+++ b/GI/Pango/Structs/LayoutIter.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.LayoutIter 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/Pango/Structs/LayoutLine.hs b/GI/Pango/Structs/LayoutLine.hs
--- a/GI/Pango/Structs/LayoutLine.hs
+++ b/GI/Pango/Structs/LayoutLine.hs
@@ -64,36 +64,50 @@
 
  -- * Properties
 -- ** IsParagraphStart
+    layoutLineIsParagraphStart              ,
     layoutLineReadIsParagraphStart          ,
+    layoutLineWriteIsParagraphStart         ,
 
 
 -- ** Layout
+    layoutLineClearLayout                   ,
+    layoutLineLayout                        ,
     layoutLineReadLayout                    ,
+    layoutLineWriteLayout                   ,
 
 
 -- ** Length
+    layoutLineLength                        ,
     layoutLineReadLength                    ,
+    layoutLineWriteLength                   ,
 
 
 -- ** ResolvedDir
     layoutLineReadResolvedDir               ,
+    layoutLineResolvedDir                   ,
+    layoutLineWriteResolvedDir              ,
 
 
 -- ** Runs
+    layoutLineClearRuns                     ,
     layoutLineReadRuns                      ,
+    layoutLineRuns                          ,
+    layoutLineWriteRuns                     ,
 
 
 -- ** StartIndex
     layoutLineReadStartIndex                ,
+    layoutLineStartIndex                    ,
+    layoutLineWriteStartIndex               ,
 
 
 
 
     ) 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
@@ -112,46 +126,187 @@
 newZeroLayoutLine :: MonadIO m => m LayoutLine
 newZeroLayoutLine = liftIO $ callocBoxedBytes 32 >>= wrapBoxed LayoutLine
 
+instance tag ~ 'AttrSet => Constructible LayoutLine tag where
+    new _ attrs = do
+        o <- newZeroLayoutLine
+        GI.Attributes.set o attrs
+        return o
+
+
 noLayoutLine :: Maybe LayoutLine
 noLayoutLine = Nothing
 
-layoutLineReadLayout :: LayoutLine -> IO Layout
-layoutLineReadLayout s = withManagedPtr s $ \ptr -> do
+layoutLineReadLayout :: MonadIO m => LayoutLine -> m (Maybe Layout)
+layoutLineReadLayout s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Layout)
-    val' <- (newObject Layout) val
-    return val'
+    result <- convertIfNonNull val $ \val' -> do
+        val'' <- (newObject Layout) val'
+        return val''
+    return result
 
-layoutLineReadStartIndex :: LayoutLine -> IO Int32
-layoutLineReadStartIndex s = withManagedPtr s $ \ptr -> do
+layoutLineWriteLayout :: MonadIO m => LayoutLine -> Ptr Layout -> m ()
+layoutLineWriteLayout s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr Layout)
+
+layoutLineClearLayout :: MonadIO m => LayoutLine -> m ()
+layoutLineClearLayout s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Layout)
+
+data LayoutLineLayoutFieldInfo
+instance AttrInfo LayoutLineLayoutFieldInfo where
+    type AttrAllowedOps LayoutLineLayoutFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint LayoutLineLayoutFieldInfo = (~) (Ptr Layout)
+    type AttrBaseTypeConstraint LayoutLineLayoutFieldInfo = (~) LayoutLine
+    type AttrGetType LayoutLineLayoutFieldInfo = Maybe Layout
+    type AttrLabel LayoutLineLayoutFieldInfo = "layout"
+    attrGet _ = layoutLineReadLayout
+    attrSet _ = layoutLineWriteLayout
+    attrConstruct = undefined
+    attrClear _ = layoutLineClearLayout
+
+layoutLineLayout :: AttrLabelProxy "layout"
+layoutLineLayout = AttrLabelProxy
+
+
+layoutLineReadStartIndex :: MonadIO m => LayoutLine -> m Int32
+layoutLineReadStartIndex s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Int32
     return val
 
-layoutLineReadLength :: LayoutLine -> IO Int32
-layoutLineReadLength s = withManagedPtr s $ \ptr -> do
+layoutLineWriteStartIndex :: MonadIO m => LayoutLine -> Int32 -> m ()
+layoutLineWriteStartIndex s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Int32)
+
+data LayoutLineStartIndexFieldInfo
+instance AttrInfo LayoutLineStartIndexFieldInfo where
+    type AttrAllowedOps LayoutLineStartIndexFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LayoutLineStartIndexFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint LayoutLineStartIndexFieldInfo = (~) LayoutLine
+    type AttrGetType LayoutLineStartIndexFieldInfo = Int32
+    type AttrLabel LayoutLineStartIndexFieldInfo = "start_index"
+    attrGet _ = layoutLineReadStartIndex
+    attrSet _ = layoutLineWriteStartIndex
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+layoutLineStartIndex :: AttrLabelProxy "startIndex"
+layoutLineStartIndex = AttrLabelProxy
+
+
+layoutLineReadLength :: MonadIO m => LayoutLine -> m Int32
+layoutLineReadLength s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 12) :: IO Int32
     return val
 
-layoutLineReadRuns :: LayoutLine -> IO ([Ptr ()])
-layoutLineReadRuns s = withManagedPtr s $ \ptr -> do
+layoutLineWriteLength :: MonadIO m => LayoutLine -> Int32 -> m ()
+layoutLineWriteLength s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 12) (val :: Int32)
+
+data LayoutLineLengthFieldInfo
+instance AttrInfo LayoutLineLengthFieldInfo where
+    type AttrAllowedOps LayoutLineLengthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LayoutLineLengthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint LayoutLineLengthFieldInfo = (~) LayoutLine
+    type AttrGetType LayoutLineLengthFieldInfo = Int32
+    type AttrLabel LayoutLineLengthFieldInfo = "length"
+    attrGet _ = layoutLineReadLength
+    attrSet _ = layoutLineWriteLength
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+layoutLineLength :: AttrLabelProxy "length"
+layoutLineLength = AttrLabelProxy
+
+
+layoutLineReadRuns :: MonadIO m => LayoutLine -> m ([Ptr ()])
+layoutLineReadRuns s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr (GSList (Ptr ())))
     val' <- unpackGSList val
     return val'
 
-layoutLineReadIsParagraphStart :: LayoutLine -> IO Word32
-layoutLineReadIsParagraphStart s = withManagedPtr s $ \ptr -> do
+layoutLineWriteRuns :: MonadIO m => LayoutLine -> Ptr (GSList (Ptr ())) -> m ()
+layoutLineWriteRuns s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Ptr (GSList (Ptr ())))
+
+layoutLineClearRuns :: MonadIO m => LayoutLine -> m ()
+layoutLineClearRuns s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (nullPtr :: Ptr (GSList (Ptr ())))
+
+data LayoutLineRunsFieldInfo
+instance AttrInfo LayoutLineRunsFieldInfo where
+    type AttrAllowedOps LayoutLineRunsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint LayoutLineRunsFieldInfo = (~) (Ptr (GSList (Ptr ())))
+    type AttrBaseTypeConstraint LayoutLineRunsFieldInfo = (~) LayoutLine
+    type AttrGetType LayoutLineRunsFieldInfo = [Ptr ()]
+    type AttrLabel LayoutLineRunsFieldInfo = "runs"
+    attrGet _ = layoutLineReadRuns
+    attrSet _ = layoutLineWriteRuns
+    attrConstruct = undefined
+    attrClear _ = layoutLineClearRuns
+
+layoutLineRuns :: AttrLabelProxy "runs"
+layoutLineRuns = AttrLabelProxy
+
+
+layoutLineReadIsParagraphStart :: MonadIO m => LayoutLine -> m Word32
+layoutLineReadIsParagraphStart s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO Word32
     return val
 
-layoutLineReadResolvedDir :: LayoutLine -> IO Word32
-layoutLineReadResolvedDir s = withManagedPtr s $ \ptr -> do
+layoutLineWriteIsParagraphStart :: MonadIO m => LayoutLine -> Word32 -> m ()
+layoutLineWriteIsParagraphStart s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Word32)
+
+data LayoutLineIsParagraphStartFieldInfo
+instance AttrInfo LayoutLineIsParagraphStartFieldInfo where
+    type AttrAllowedOps LayoutLineIsParagraphStartFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LayoutLineIsParagraphStartFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LayoutLineIsParagraphStartFieldInfo = (~) LayoutLine
+    type AttrGetType LayoutLineIsParagraphStartFieldInfo = Word32
+    type AttrLabel LayoutLineIsParagraphStartFieldInfo = "is_paragraph_start"
+    attrGet _ = layoutLineReadIsParagraphStart
+    attrSet _ = layoutLineWriteIsParagraphStart
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+layoutLineIsParagraphStart :: AttrLabelProxy "isParagraphStart"
+layoutLineIsParagraphStart = AttrLabelProxy
+
+
+layoutLineReadResolvedDir :: MonadIO m => LayoutLine -> m Word32
+layoutLineReadResolvedDir s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 28) :: IO Word32
     return val
 
+layoutLineWriteResolvedDir :: MonadIO m => LayoutLine -> Word32 -> m ()
+layoutLineWriteResolvedDir s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 28) (val :: Word32)
+
+data LayoutLineResolvedDirFieldInfo
+instance AttrInfo LayoutLineResolvedDirFieldInfo where
+    type AttrAllowedOps LayoutLineResolvedDirFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LayoutLineResolvedDirFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LayoutLineResolvedDirFieldInfo = (~) LayoutLine
+    type AttrGetType LayoutLineResolvedDirFieldInfo = Word32
+    type AttrLabel LayoutLineResolvedDirFieldInfo = "resolved_dir"
+    attrGet _ = layoutLineReadResolvedDir
+    attrSet _ = layoutLineWriteResolvedDir
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+layoutLineResolvedDir :: AttrLabelProxy "resolvedDir"
+layoutLineResolvedDir = AttrLabelProxy
+
+
+
+type instance AttributeList LayoutLine = LayoutLineAttributeList
+type LayoutLineAttributeList = ('[ '("layout", LayoutLineLayoutFieldInfo), '("startIndex", LayoutLineStartIndexFieldInfo), '("length", LayoutLineLengthFieldInfo), '("runs", LayoutLineRunsFieldInfo), '("isParagraphStart", LayoutLineIsParagraphStartFieldInfo), '("resolvedDir", LayoutLineResolvedDirFieldInfo)] :: [(Symbol, *)])
+
 -- method LayoutLine::get_extents
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -184,7 +339,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "logical_rect", argType = TInterface "Pango" "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
 
@@ -215,18 +370,18 @@
 
 -- method LayoutLine::get_x_ranges
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ranges", argType = TCArray False (-1) 4 (TBasicType TInt32), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_ranges", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- Lengths : [Arg {argCName = "n_ranges", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
--- returnType : TBasicType TVoid
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start_index", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end_index", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ranges", argType = TCArray False (-1) 4 (TBasicType TInt), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_ranges", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Lengths : [Arg {argCName = "n_ranges", 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 "pango_layout_line_get_x_ranges" pango_layout_line_get_x_ranges :: 
     Ptr LayoutLine ->                       -- _obj : TInterface "Pango" "LayoutLine"
-    Int32 ->                                -- start_index : TBasicType TInt32
-    Int32 ->                                -- end_index : TBasicType TInt32
-    Ptr (Ptr Int32) ->                      -- ranges : TCArray False (-1) 4 (TBasicType TInt32)
-    Ptr Int32 ->                            -- n_ranges : TBasicType TInt32
+    Int32 ->                                -- start_index : TBasicType TInt
+    Int32 ->                                -- end_index : TBasicType TInt
+    Ptr (Ptr Int32) ->                      -- ranges : TCArray False (-1) 4 (TBasicType TInt)
+    Ptr Int32 ->                            -- n_ranges : TBasicType TInt
     IO ()
 
 
@@ -256,31 +411,31 @@
 
 -- method LayoutLine::index_to_x
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "trailing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_pos", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "trailing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_pos", 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 "pango_layout_line_index_to_x" pango_layout_line_index_to_x :: 
     Ptr LayoutLine ->                       -- _obj : TInterface "Pango" "LayoutLine"
-    Int32 ->                                -- index_ : TBasicType TInt32
+    Int32 ->                                -- index_ : TBasicType TInt
     CInt ->                                 -- trailing : TBasicType TBoolean
-    Ptr Int32 ->                            -- x_pos : TBasicType TInt32
+    Ptr Int32 ->                            -- x_pos : TBasicType TInt
     IO ()
 
 
 layoutLineIndexToX ::
     (MonadIO m) =>
     LayoutLine                              -- _obj
-    -> Int32                                -- index
+    -> Int32                                -- index_
     -> Bool                                 -- trailing
     -> m (Int32)                            -- result
-layoutLineIndexToX _obj index trailing = liftIO $ do
+layoutLineIndexToX _obj index_ trailing = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     let trailing' = (fromIntegral . fromEnum) trailing
     xPos <- allocMem :: IO (Ptr Int32)
-    pango_layout_line_index_to_x _obj' index trailing' xPos
+    pango_layout_line_index_to_x _obj' index_ trailing' xPos
     xPos' <- peek xPos
     touchManagedPtr _obj
     freeMem xPos
@@ -294,7 +449,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "LayoutLine"
+-- returnType : Just (TInterface "Pango" "LayoutLine")
 -- throws : False
 -- Skip return : False
 
@@ -323,7 +478,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutLine", 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
 
@@ -348,17 +503,17 @@
 
 -- method LayoutLine::x_to_index
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_pos", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "trailing", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x_pos", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "trailing", argType = TBasicType TInt, 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 "pango_layout_line_x_to_index" pango_layout_line_x_to_index :: 
     Ptr LayoutLine ->                       -- _obj : TInterface "Pango" "LayoutLine"
-    Int32 ->                                -- x_pos : TBasicType TInt32
-    Ptr Int32 ->                            -- index_ : TBasicType TInt32
-    Ptr Int32 ->                            -- trailing : TBasicType TInt32
+    Int32 ->                                -- x_pos : TBasicType TInt
+    Ptr Int32 ->                            -- index_ : TBasicType TInt
+    Ptr Int32 ->                            -- trailing : TBasicType TInt
     IO CInt
 
 
@@ -369,16 +524,16 @@
     -> m (Bool,Int32,Int32)                 -- result
 layoutLineXToIndex _obj xPos = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
-    index <- allocMem :: IO (Ptr Int32)
+    index_ <- allocMem :: IO (Ptr Int32)
     trailing <- allocMem :: IO (Ptr Int32)
-    result <- pango_layout_line_x_to_index _obj' xPos index trailing
+    result <- pango_layout_line_x_to_index _obj' xPos index_ trailing
     let result' = (/= 0) result
-    index' <- peek index
+    index_' <- peek index_
     trailing' <- peek trailing
     touchManagedPtr _obj
-    freeMem index
+    freeMem index_
     freeMem trailing
-    return (result', index', trailing')
+    return (result', index_', trailing')
 
 data LayoutLineXToIndexMethodInfo
 instance (signature ~ (Int32 -> m (Bool,Int32,Int32)), MonadIO m) => MethodInfo LayoutLineXToIndexMethodInfo LayoutLine signature where
diff --git a/GI/Pango/Structs/LayoutLine.hs-boot b/GI/Pango/Structs/LayoutLine.hs-boot
--- a/GI/Pango/Structs/LayoutLine.hs-boot
+++ b/GI/Pango/Structs/LayoutLine.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.LayoutLine 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/Pango/Structs/LogAttr.hs b/GI/Pango/Structs/LogAttr.hs
--- a/GI/Pango/Structs/LogAttr.hs
+++ b/GI/Pango/Structs/LogAttr.hs
@@ -20,64 +20,90 @@
 
  -- * Properties
 -- ** BackspaceDeletesCharacter
+    logAttrBackspaceDeletesCharacter        ,
     logAttrReadBackspaceDeletesCharacter    ,
+    logAttrWriteBackspaceDeletesCharacter   ,
 
 
 -- ** IsCharBreak
+    logAttrIsCharBreak                      ,
     logAttrReadIsCharBreak                  ,
+    logAttrWriteIsCharBreak                 ,
 
 
 -- ** IsCursorPosition
+    logAttrIsCursorPosition                 ,
     logAttrReadIsCursorPosition             ,
+    logAttrWriteIsCursorPosition            ,
 
 
 -- ** IsExpandableSpace
+    logAttrIsExpandableSpace                ,
     logAttrReadIsExpandableSpace            ,
+    logAttrWriteIsExpandableSpace           ,
 
 
 -- ** IsLineBreak
+    logAttrIsLineBreak                      ,
     logAttrReadIsLineBreak                  ,
+    logAttrWriteIsLineBreak                 ,
 
 
 -- ** IsMandatoryBreak
+    logAttrIsMandatoryBreak                 ,
     logAttrReadIsMandatoryBreak             ,
+    logAttrWriteIsMandatoryBreak            ,
 
 
 -- ** IsSentenceBoundary
+    logAttrIsSentenceBoundary               ,
     logAttrReadIsSentenceBoundary           ,
+    logAttrWriteIsSentenceBoundary          ,
 
 
 -- ** IsSentenceEnd
+    logAttrIsSentenceEnd                    ,
     logAttrReadIsSentenceEnd                ,
+    logAttrWriteIsSentenceEnd               ,
 
 
 -- ** IsSentenceStart
+    logAttrIsSentenceStart                  ,
     logAttrReadIsSentenceStart              ,
+    logAttrWriteIsSentenceStart             ,
 
 
 -- ** IsWhite
+    logAttrIsWhite                          ,
     logAttrReadIsWhite                      ,
+    logAttrWriteIsWhite                     ,
 
 
 -- ** IsWordBoundary
+    logAttrIsWordBoundary                   ,
     logAttrReadIsWordBoundary               ,
+    logAttrWriteIsWordBoundary              ,
 
 
 -- ** IsWordEnd
+    logAttrIsWordEnd                        ,
     logAttrReadIsWordEnd                    ,
+    logAttrWriteIsWordEnd                   ,
 
 
 -- ** IsWordStart
+    logAttrIsWordStart                      ,
     logAttrReadIsWordStart                  ,
+    logAttrWriteIsWordStart                 ,
 
 
 
 
     ) 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
@@ -90,73 +116,344 @@
 newZeroLogAttr :: MonadIO m => m LogAttr
 newZeroLogAttr = liftIO $ callocBytes 52 >>= wrapPtr LogAttr
 
+instance tag ~ 'AttrSet => Constructible LogAttr tag where
+    new _ attrs = do
+        o <- newZeroLogAttr
+        GI.Attributes.set o attrs
+        return o
+
+
 noLogAttr :: Maybe LogAttr
 noLogAttr = Nothing
 
-logAttrReadIsLineBreak :: LogAttr -> IO Word32
-logAttrReadIsLineBreak s = withManagedPtr s $ \ptr -> do
+logAttrReadIsLineBreak :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsLineBreak s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word32
     return val
 
-logAttrReadIsMandatoryBreak :: LogAttr -> IO Word32
-logAttrReadIsMandatoryBreak s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsLineBreak :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsLineBreak s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word32)
+
+data LogAttrIsLineBreakFieldInfo
+instance AttrInfo LogAttrIsLineBreakFieldInfo where
+    type AttrAllowedOps LogAttrIsLineBreakFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsLineBreakFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsLineBreakFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsLineBreakFieldInfo = Word32
+    type AttrLabel LogAttrIsLineBreakFieldInfo = "is_line_break"
+    attrGet _ = logAttrReadIsLineBreak
+    attrSet _ = logAttrWriteIsLineBreak
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsLineBreak :: AttrLabelProxy "isLineBreak"
+logAttrIsLineBreak = AttrLabelProxy
+
+
+logAttrReadIsMandatoryBreak :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsMandatoryBreak s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO Word32
     return val
 
-logAttrReadIsCharBreak :: LogAttr -> IO Word32
-logAttrReadIsCharBreak s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsMandatoryBreak :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsMandatoryBreak s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (val :: Word32)
+
+data LogAttrIsMandatoryBreakFieldInfo
+instance AttrInfo LogAttrIsMandatoryBreakFieldInfo where
+    type AttrAllowedOps LogAttrIsMandatoryBreakFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsMandatoryBreakFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsMandatoryBreakFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsMandatoryBreakFieldInfo = Word32
+    type AttrLabel LogAttrIsMandatoryBreakFieldInfo = "is_mandatory_break"
+    attrGet _ = logAttrReadIsMandatoryBreak
+    attrSet _ = logAttrWriteIsMandatoryBreak
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsMandatoryBreak :: AttrLabelProxy "isMandatoryBreak"
+logAttrIsMandatoryBreak = AttrLabelProxy
+
+
+logAttrReadIsCharBreak :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsCharBreak s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Word32
     return val
 
-logAttrReadIsWhite :: LogAttr -> IO Word32
-logAttrReadIsWhite s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsCharBreak :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsCharBreak s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Word32)
+
+data LogAttrIsCharBreakFieldInfo
+instance AttrInfo LogAttrIsCharBreakFieldInfo where
+    type AttrAllowedOps LogAttrIsCharBreakFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsCharBreakFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsCharBreakFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsCharBreakFieldInfo = Word32
+    type AttrLabel LogAttrIsCharBreakFieldInfo = "is_char_break"
+    attrGet _ = logAttrReadIsCharBreak
+    attrSet _ = logAttrWriteIsCharBreak
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsCharBreak :: AttrLabelProxy "isCharBreak"
+logAttrIsCharBreak = AttrLabelProxy
+
+
+logAttrReadIsWhite :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsWhite s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 12) :: IO Word32
     return val
 
-logAttrReadIsCursorPosition :: LogAttr -> IO Word32
-logAttrReadIsCursorPosition s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsWhite :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsWhite s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 12) (val :: Word32)
+
+data LogAttrIsWhiteFieldInfo
+instance AttrInfo LogAttrIsWhiteFieldInfo where
+    type AttrAllowedOps LogAttrIsWhiteFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsWhiteFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsWhiteFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsWhiteFieldInfo = Word32
+    type AttrLabel LogAttrIsWhiteFieldInfo = "is_white"
+    attrGet _ = logAttrReadIsWhite
+    attrSet _ = logAttrWriteIsWhite
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsWhite :: AttrLabelProxy "isWhite"
+logAttrIsWhite = AttrLabelProxy
+
+
+logAttrReadIsCursorPosition :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsCursorPosition s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO Word32
     return val
 
-logAttrReadIsWordStart :: LogAttr -> IO Word32
-logAttrReadIsWordStart s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsCursorPosition :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsCursorPosition s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 16) (val :: Word32)
+
+data LogAttrIsCursorPositionFieldInfo
+instance AttrInfo LogAttrIsCursorPositionFieldInfo where
+    type AttrAllowedOps LogAttrIsCursorPositionFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsCursorPositionFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsCursorPositionFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsCursorPositionFieldInfo = Word32
+    type AttrLabel LogAttrIsCursorPositionFieldInfo = "is_cursor_position"
+    attrGet _ = logAttrReadIsCursorPosition
+    attrSet _ = logAttrWriteIsCursorPosition
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsCursorPosition :: AttrLabelProxy "isCursorPosition"
+logAttrIsCursorPosition = AttrLabelProxy
+
+
+logAttrReadIsWordStart :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsWordStart s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 20) :: IO Word32
     return val
 
-logAttrReadIsWordEnd :: LogAttr -> IO Word32
-logAttrReadIsWordEnd s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsWordStart :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsWordStart s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 20) (val :: Word32)
+
+data LogAttrIsWordStartFieldInfo
+instance AttrInfo LogAttrIsWordStartFieldInfo where
+    type AttrAllowedOps LogAttrIsWordStartFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsWordStartFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsWordStartFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsWordStartFieldInfo = Word32
+    type AttrLabel LogAttrIsWordStartFieldInfo = "is_word_start"
+    attrGet _ = logAttrReadIsWordStart
+    attrSet _ = logAttrWriteIsWordStart
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsWordStart :: AttrLabelProxy "isWordStart"
+logAttrIsWordStart = AttrLabelProxy
+
+
+logAttrReadIsWordEnd :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsWordEnd s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO Word32
     return val
 
-logAttrReadIsSentenceBoundary :: LogAttr -> IO Word32
-logAttrReadIsSentenceBoundary s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsWordEnd :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsWordEnd s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 24) (val :: Word32)
+
+data LogAttrIsWordEndFieldInfo
+instance AttrInfo LogAttrIsWordEndFieldInfo where
+    type AttrAllowedOps LogAttrIsWordEndFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsWordEndFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsWordEndFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsWordEndFieldInfo = Word32
+    type AttrLabel LogAttrIsWordEndFieldInfo = "is_word_end"
+    attrGet _ = logAttrReadIsWordEnd
+    attrSet _ = logAttrWriteIsWordEnd
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsWordEnd :: AttrLabelProxy "isWordEnd"
+logAttrIsWordEnd = AttrLabelProxy
+
+
+logAttrReadIsSentenceBoundary :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsSentenceBoundary s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 28) :: IO Word32
     return val
 
-logAttrReadIsSentenceStart :: LogAttr -> IO Word32
-logAttrReadIsSentenceStart s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsSentenceBoundary :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsSentenceBoundary s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 28) (val :: Word32)
+
+data LogAttrIsSentenceBoundaryFieldInfo
+instance AttrInfo LogAttrIsSentenceBoundaryFieldInfo where
+    type AttrAllowedOps LogAttrIsSentenceBoundaryFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsSentenceBoundaryFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsSentenceBoundaryFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsSentenceBoundaryFieldInfo = Word32
+    type AttrLabel LogAttrIsSentenceBoundaryFieldInfo = "is_sentence_boundary"
+    attrGet _ = logAttrReadIsSentenceBoundary
+    attrSet _ = logAttrWriteIsSentenceBoundary
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsSentenceBoundary :: AttrLabelProxy "isSentenceBoundary"
+logAttrIsSentenceBoundary = AttrLabelProxy
+
+
+logAttrReadIsSentenceStart :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsSentenceStart s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO Word32
     return val
 
-logAttrReadIsSentenceEnd :: LogAttr -> IO Word32
-logAttrReadIsSentenceEnd s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsSentenceStart :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsSentenceStart s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 32) (val :: Word32)
+
+data LogAttrIsSentenceStartFieldInfo
+instance AttrInfo LogAttrIsSentenceStartFieldInfo where
+    type AttrAllowedOps LogAttrIsSentenceStartFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsSentenceStartFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsSentenceStartFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsSentenceStartFieldInfo = Word32
+    type AttrLabel LogAttrIsSentenceStartFieldInfo = "is_sentence_start"
+    attrGet _ = logAttrReadIsSentenceStart
+    attrSet _ = logAttrWriteIsSentenceStart
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsSentenceStart :: AttrLabelProxy "isSentenceStart"
+logAttrIsSentenceStart = AttrLabelProxy
+
+
+logAttrReadIsSentenceEnd :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsSentenceEnd s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 36) :: IO Word32
     return val
 
-logAttrReadBackspaceDeletesCharacter :: LogAttr -> IO Word32
-logAttrReadBackspaceDeletesCharacter s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsSentenceEnd :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsSentenceEnd s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 36) (val :: Word32)
+
+data LogAttrIsSentenceEndFieldInfo
+instance AttrInfo LogAttrIsSentenceEndFieldInfo where
+    type AttrAllowedOps LogAttrIsSentenceEndFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsSentenceEndFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsSentenceEndFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsSentenceEndFieldInfo = Word32
+    type AttrLabel LogAttrIsSentenceEndFieldInfo = "is_sentence_end"
+    attrGet _ = logAttrReadIsSentenceEnd
+    attrSet _ = logAttrWriteIsSentenceEnd
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsSentenceEnd :: AttrLabelProxy "isSentenceEnd"
+logAttrIsSentenceEnd = AttrLabelProxy
+
+
+logAttrReadBackspaceDeletesCharacter :: MonadIO m => LogAttr -> m Word32
+logAttrReadBackspaceDeletesCharacter s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO Word32
     return val
 
-logAttrReadIsExpandableSpace :: LogAttr -> IO Word32
-logAttrReadIsExpandableSpace s = withManagedPtr s $ \ptr -> do
+logAttrWriteBackspaceDeletesCharacter :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteBackspaceDeletesCharacter s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 40) (val :: Word32)
+
+data LogAttrBackspaceDeletesCharacterFieldInfo
+instance AttrInfo LogAttrBackspaceDeletesCharacterFieldInfo where
+    type AttrAllowedOps LogAttrBackspaceDeletesCharacterFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrBackspaceDeletesCharacterFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrBackspaceDeletesCharacterFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrBackspaceDeletesCharacterFieldInfo = Word32
+    type AttrLabel LogAttrBackspaceDeletesCharacterFieldInfo = "backspace_deletes_character"
+    attrGet _ = logAttrReadBackspaceDeletesCharacter
+    attrSet _ = logAttrWriteBackspaceDeletesCharacter
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrBackspaceDeletesCharacter :: AttrLabelProxy "backspaceDeletesCharacter"
+logAttrBackspaceDeletesCharacter = AttrLabelProxy
+
+
+logAttrReadIsExpandableSpace :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsExpandableSpace s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 44) :: IO Word32
     return val
 
-logAttrReadIsWordBoundary :: LogAttr -> IO Word32
-logAttrReadIsWordBoundary s = withManagedPtr s $ \ptr -> do
+logAttrWriteIsExpandableSpace :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsExpandableSpace s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 44) (val :: Word32)
+
+data LogAttrIsExpandableSpaceFieldInfo
+instance AttrInfo LogAttrIsExpandableSpaceFieldInfo where
+    type AttrAllowedOps LogAttrIsExpandableSpaceFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsExpandableSpaceFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsExpandableSpaceFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsExpandableSpaceFieldInfo = Word32
+    type AttrLabel LogAttrIsExpandableSpaceFieldInfo = "is_expandable_space"
+    attrGet _ = logAttrReadIsExpandableSpace
+    attrSet _ = logAttrWriteIsExpandableSpace
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsExpandableSpace :: AttrLabelProxy "isExpandableSpace"
+logAttrIsExpandableSpace = AttrLabelProxy
+
+
+logAttrReadIsWordBoundary :: MonadIO m => LogAttr -> m Word32
+logAttrReadIsWordBoundary s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 48) :: IO Word32
     return val
+
+logAttrWriteIsWordBoundary :: MonadIO m => LogAttr -> Word32 -> m ()
+logAttrWriteIsWordBoundary s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 48) (val :: Word32)
+
+data LogAttrIsWordBoundaryFieldInfo
+instance AttrInfo LogAttrIsWordBoundaryFieldInfo where
+    type AttrAllowedOps LogAttrIsWordBoundaryFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint LogAttrIsWordBoundaryFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint LogAttrIsWordBoundaryFieldInfo = (~) LogAttr
+    type AttrGetType LogAttrIsWordBoundaryFieldInfo = Word32
+    type AttrLabel LogAttrIsWordBoundaryFieldInfo = "is_word_boundary"
+    attrGet _ = logAttrReadIsWordBoundary
+    attrSet _ = logAttrWriteIsWordBoundary
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+logAttrIsWordBoundary :: AttrLabelProxy "isWordBoundary"
+logAttrIsWordBoundary = AttrLabelProxy
+
+
+
+type instance AttributeList LogAttr = LogAttrAttributeList
+type LogAttrAttributeList = ('[ '("isLineBreak", LogAttrIsLineBreakFieldInfo), '("isMandatoryBreak", LogAttrIsMandatoryBreakFieldInfo), '("isCharBreak", LogAttrIsCharBreakFieldInfo), '("isWhite", LogAttrIsWhiteFieldInfo), '("isCursorPosition", LogAttrIsCursorPositionFieldInfo), '("isWordStart", LogAttrIsWordStartFieldInfo), '("isWordEnd", LogAttrIsWordEndFieldInfo), '("isSentenceBoundary", LogAttrIsSentenceBoundaryFieldInfo), '("isSentenceStart", LogAttrIsSentenceStartFieldInfo), '("isSentenceEnd", LogAttrIsSentenceEndFieldInfo), '("backspaceDeletesCharacter", LogAttrBackspaceDeletesCharacterFieldInfo), '("isExpandableSpace", LogAttrIsExpandableSpaceFieldInfo), '("isWordBoundary", LogAttrIsWordBoundaryFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveLogAttrMethod (t :: Symbol) (o :: *) :: * where
     ResolveLogAttrMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/LogAttr.hs-boot b/GI/Pango/Structs/LogAttr.hs-boot
--- a/GI/Pango/Structs/LogAttr.hs-boot
+++ b/GI/Pango/Structs/LogAttr.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.LogAttr 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/Pango/Structs/Map.hs b/GI/Pango/Structs/Map.hs
--- a/GI/Pango/Structs/Map.hs
+++ b/GI/Pango/Structs/Map.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 Map = Map (ForeignPtr Map)
 noMap :: Maybe Map
 noMap = Nothing
+
+
+type instance AttributeList Map = MapAttributeList
+type MapAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveMapMethod (t :: Symbol) (o :: *) :: * where
     ResolveMapMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/Map.hs-boot b/GI/Pango/Structs/Map.hs-boot
--- a/GI/Pango/Structs/Map.hs-boot
+++ b/GI/Pango/Structs/Map.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.Map 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/Pango/Structs/MapEntry.hs b/GI/Pango/Structs/MapEntry.hs
--- a/GI/Pango/Structs/MapEntry.hs
+++ b/GI/Pango/Structs/MapEntry.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 MapEntry = MapEntry (ForeignPtr MapEntry)
 noMapEntry :: Maybe MapEntry
 noMapEntry = Nothing
+
+
+type instance AttributeList MapEntry = MapEntryAttributeList
+type MapEntryAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveMapEntryMethod (t :: Symbol) (o :: *) :: * where
     ResolveMapEntryMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/MapEntry.hs-boot b/GI/Pango/Structs/MapEntry.hs-boot
--- a/GI/Pango/Structs/MapEntry.hs-boot
+++ b/GI/Pango/Structs/MapEntry.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.MapEntry 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/Pango/Structs/Matrix.hs b/GI/Pango/Structs/Matrix.hs
--- a/GI/Pango/Structs/Matrix.hs
+++ b/GI/Pango/Structs/Matrix.hs
@@ -80,35 +80,47 @@
  -- * Properties
 -- ** X0
     matrixReadX0                            ,
+    matrixWriteX0                           ,
+    matrixX0                                ,
 
 
 -- ** Xx
     matrixReadXx                            ,
+    matrixWriteXx                           ,
+    matrixXx                                ,
 
 
 -- ** Xy
     matrixReadXy                            ,
+    matrixWriteXy                           ,
+    matrixXy                                ,
 
 
 -- ** Y0
     matrixReadY0                            ,
+    matrixWriteY0                           ,
+    matrixY0                                ,
 
 
 -- ** Yx
     matrixReadYx                            ,
+    matrixWriteYx                           ,
+    matrixYx                                ,
 
 
 -- ** Yy
     matrixReadYy                            ,
+    matrixWriteYy                           ,
+    matrixYy                                ,
 
 
 
 
     ) 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
@@ -127,50 +139,187 @@
 newZeroMatrix :: MonadIO m => m Matrix
 newZeroMatrix = liftIO $ callocBoxedBytes 48 >>= wrapBoxed Matrix
 
+instance tag ~ 'AttrSet => Constructible Matrix tag where
+    new _ attrs = do
+        o <- newZeroMatrix
+        GI.Attributes.set o attrs
+        return o
+
+
 noMatrix :: Maybe Matrix
 noMatrix = Nothing
 
-matrixReadXx :: Matrix -> IO Double
-matrixReadXx s = withManagedPtr s $ \ptr -> do
+matrixReadXx :: MonadIO m => Matrix -> m Double
+matrixReadXx s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-matrixReadXy :: Matrix -> IO Double
-matrixReadXy s = withManagedPtr s $ \ptr -> do
+matrixWriteXx :: MonadIO m => Matrix -> Double -> m ()
+matrixWriteXx s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 0) (val' :: CDouble)
+
+data MatrixXxFieldInfo
+instance AttrInfo MatrixXxFieldInfo where
+    type AttrAllowedOps MatrixXxFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint MatrixXxFieldInfo = (~) Double
+    type AttrBaseTypeConstraint MatrixXxFieldInfo = (~) Matrix
+    type AttrGetType MatrixXxFieldInfo = Double
+    type AttrLabel MatrixXxFieldInfo = "xx"
+    attrGet _ = matrixReadXx
+    attrSet _ = matrixWriteXx
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+matrixXx :: AttrLabelProxy "xx"
+matrixXx = AttrLabelProxy
+
+
+matrixReadXy :: MonadIO m => Matrix -> m Double
+matrixReadXy s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-matrixReadYx :: Matrix -> IO Double
-matrixReadYx s = withManagedPtr s $ \ptr -> do
+matrixWriteXy :: MonadIO m => Matrix -> Double -> m ()
+matrixWriteXy s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 8) (val' :: CDouble)
+
+data MatrixXyFieldInfo
+instance AttrInfo MatrixXyFieldInfo where
+    type AttrAllowedOps MatrixXyFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint MatrixXyFieldInfo = (~) Double
+    type AttrBaseTypeConstraint MatrixXyFieldInfo = (~) Matrix
+    type AttrGetType MatrixXyFieldInfo = Double
+    type AttrLabel MatrixXyFieldInfo = "xy"
+    attrGet _ = matrixReadXy
+    attrSet _ = matrixWriteXy
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+matrixXy :: AttrLabelProxy "xy"
+matrixXy = AttrLabelProxy
+
+
+matrixReadYx :: MonadIO m => Matrix -> m Double
+matrixReadYx s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-matrixReadYy :: Matrix -> IO Double
-matrixReadYy s = withManagedPtr s $ \ptr -> do
+matrixWriteYx :: MonadIO m => Matrix -> Double -> m ()
+matrixWriteYx s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 16) (val' :: CDouble)
+
+data MatrixYxFieldInfo
+instance AttrInfo MatrixYxFieldInfo where
+    type AttrAllowedOps MatrixYxFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint MatrixYxFieldInfo = (~) Double
+    type AttrBaseTypeConstraint MatrixYxFieldInfo = (~) Matrix
+    type AttrGetType MatrixYxFieldInfo = Double
+    type AttrLabel MatrixYxFieldInfo = "yx"
+    attrGet _ = matrixReadYx
+    attrSet _ = matrixWriteYx
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+matrixYx :: AttrLabelProxy "yx"
+matrixYx = AttrLabelProxy
+
+
+matrixReadYy :: MonadIO m => Matrix -> m Double
+matrixReadYy s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-matrixReadX0 :: Matrix -> IO Double
-matrixReadX0 s = withManagedPtr s $ \ptr -> do
+matrixWriteYy :: MonadIO m => Matrix -> Double -> m ()
+matrixWriteYy s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 24) (val' :: CDouble)
+
+data MatrixYyFieldInfo
+instance AttrInfo MatrixYyFieldInfo where
+    type AttrAllowedOps MatrixYyFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint MatrixYyFieldInfo = (~) Double
+    type AttrBaseTypeConstraint MatrixYyFieldInfo = (~) Matrix
+    type AttrGetType MatrixYyFieldInfo = Double
+    type AttrLabel MatrixYyFieldInfo = "yy"
+    attrGet _ = matrixReadYy
+    attrSet _ = matrixWriteYy
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+matrixYy :: AttrLabelProxy "yy"
+matrixYy = AttrLabelProxy
+
+
+matrixReadX0 :: MonadIO m => Matrix -> m Double
+matrixReadX0 s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-matrixReadY0 :: Matrix -> IO Double
-matrixReadY0 s = withManagedPtr s $ \ptr -> do
+matrixWriteX0 :: MonadIO m => Matrix -> Double -> m ()
+matrixWriteX0 s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 32) (val' :: CDouble)
+
+data MatrixX0FieldInfo
+instance AttrInfo MatrixX0FieldInfo where
+    type AttrAllowedOps MatrixX0FieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint MatrixX0FieldInfo = (~) Double
+    type AttrBaseTypeConstraint MatrixX0FieldInfo = (~) Matrix
+    type AttrGetType MatrixX0FieldInfo = Double
+    type AttrLabel MatrixX0FieldInfo = "x0"
+    attrGet _ = matrixReadX0
+    attrSet _ = matrixWriteX0
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+matrixX0 :: AttrLabelProxy "x0"
+matrixX0 = AttrLabelProxy
+
+
+matrixReadY0 :: MonadIO m => Matrix -> m Double
+matrixReadY0 s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 40) :: IO CDouble
     let val' = realToFrac val
     return val'
 
+matrixWriteY0 :: MonadIO m => Matrix -> Double -> m ()
+matrixWriteY0 s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 40) (val' :: CDouble)
+
+data MatrixY0FieldInfo
+instance AttrInfo MatrixY0FieldInfo where
+    type AttrAllowedOps MatrixY0FieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint MatrixY0FieldInfo = (~) Double
+    type AttrBaseTypeConstraint MatrixY0FieldInfo = (~) Matrix
+    type AttrGetType MatrixY0FieldInfo = Double
+    type AttrLabel MatrixY0FieldInfo = "y0"
+    attrGet _ = matrixReadY0
+    attrSet _ = matrixWriteY0
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+matrixY0 :: AttrLabelProxy "y0"
+matrixY0 = AttrLabelProxy
+
+
+
+type instance AttributeList Matrix = MatrixAttributeList
+type MatrixAttributeList = ('[ '("xx", MatrixXxFieldInfo), '("xy", MatrixXyFieldInfo), '("yx", MatrixYxFieldInfo), '("yy", MatrixYyFieldInfo), '("x0", MatrixX0FieldInfo), '("y0", MatrixY0FieldInfo)] :: [(Symbol, *)])
+
 -- method Matrix::concat
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_matrix", argType = TInterface "Pango" "Matrix", 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
 
@@ -201,7 +350,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "Matrix"
+-- returnType : Just (TInterface "Pango" "Matrix")
 -- throws : False
 -- Skip return : False
 
@@ -213,24 +362,25 @@
 matrixCopy ::
     (MonadIO m) =>
     Matrix                                  -- _obj
-    -> m Matrix                             -- result
+    -> m (Maybe Matrix)                     -- result
 matrixCopy _obj = liftIO $ do
     let _obj' = unsafeManagedPtrGetPtr _obj
     result <- pango_matrix_copy _obj'
-    checkUnexpectedReturnNULL "pango_matrix_copy" result
-    result' <- (wrapBoxed Matrix) result
+    maybeResult <- convertIfNonNull result $ \result' -> do
+        result'' <- (wrapBoxed Matrix) result'
+        return result''
     touchManagedPtr _obj
-    return result'
+    return maybeResult
 
 data MatrixCopyMethodInfo
-instance (signature ~ (m Matrix), MonadIO m) => MethodInfo MatrixCopyMethodInfo Matrix signature where
+instance (signature ~ (m (Maybe Matrix)), MonadIO m) => MethodInfo MatrixCopyMethodInfo Matrix signature where
     overloadedMethod _ = matrixCopy
 
 -- method Matrix::free
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Matrix", 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
 
@@ -257,7 +407,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Matrix", 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
 
@@ -285,7 +435,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "xscale", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "yscale", 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
 
@@ -322,7 +472,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "degrees", 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
 
@@ -352,7 +502,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scale_x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scale_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
 
@@ -385,7 +535,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dx", argType = TBasicType TDouble, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "dy", argType = TBasicType TDouble, 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
 
@@ -430,7 +580,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TDouble, 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
 
@@ -475,7 +625,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tx", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ty", 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
 
diff --git a/GI/Pango/Structs/Matrix.hs-boot b/GI/Pango/Structs/Matrix.hs-boot
--- a/GI/Pango/Structs/Matrix.hs-boot
+++ b/GI/Pango/Structs/Matrix.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.Matrix 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/Pango/Structs/Rectangle.hs b/GI/Pango/Structs/Rectangle.hs
--- a/GI/Pango/Structs/Rectangle.hs
+++ b/GI/Pango/Structs/Rectangle.hs
@@ -21,28 +21,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
@@ -55,28 +63,119 @@
 newZeroRectangle :: MonadIO m => m Rectangle
 newZeroRectangle = liftIO $ callocBytes 16 >>= wrapPtr 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, *)])
 
 type family ResolveRectangleMethod (t :: Symbol) (o :: *) :: * where
     ResolveRectangleMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/Rectangle.hs-boot b/GI/Pango/Structs/Rectangle.hs-boot
--- a/GI/Pango/Structs/Rectangle.hs-boot
+++ b/GI/Pango/Structs/Rectangle.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.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/Pango/Structs/ScriptForLang.hs b/GI/Pango/Structs/ScriptForLang.hs
--- a/GI/Pango/Structs/ScriptForLang.hs
+++ b/GI/Pango/Structs/ScriptForLang.hs
@@ -17,9 +17,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
@@ -32,12 +32,21 @@
 newZeroScriptForLang :: MonadIO m => m ScriptForLang
 newZeroScriptForLang = liftIO $ callocBytes 20 >>= wrapPtr ScriptForLang
 
+instance tag ~ 'AttrSet => Constructible ScriptForLang tag where
+    new _ attrs = do
+        o <- newZeroScriptForLang
+        GI.Attributes.set o attrs
+        return o
+
+
 noScriptForLang :: Maybe ScriptForLang
 noScriptForLang = Nothing
 
--- XXX Skipped getter for "ScriptForLang:lang" :: Not implemented: "Don't know how to unpack C array of type TCArray False 7 (-1) (TBasicType TInt8)"
+-- XXX Skipped attribute for "ScriptForLang:lang" :: Not implemented: "Don't know how to unpack C array of type TCArray False 7 (-1) (TBasicType TInt8)"
+-- XXX Skipped attribute for "ScriptForLang:scripts" :: Not implemented: "Don't know how to unpack C array of type TCArray False 3 (-1) (TInterface \"Pango\" \"Script\")"
 
--- XXX Skipped getter for "ScriptForLang:scripts" :: Not implemented: "Don't know how to unpack C array of type TCArray False 3 (-1) (TInterface \"Pango\" \"Script\")"
+type instance AttributeList ScriptForLang = ScriptForLangAttributeList
+type ScriptForLangAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveScriptForLangMethod (t :: Symbol) (o :: *) :: * where
     ResolveScriptForLangMethod l o = MethodResolutionFailed l o
diff --git a/GI/Pango/Structs/ScriptForLang.hs-boot b/GI/Pango/Structs/ScriptForLang.hs-boot
--- a/GI/Pango/Structs/ScriptForLang.hs-boot
+++ b/GI/Pango/Structs/ScriptForLang.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.ScriptForLang 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/Pango/Structs/ScriptIter.hs b/GI/Pango/Structs/ScriptIter.hs
--- a/GI/Pango/Structs/ScriptIter.hs
+++ b/GI/Pango/Structs/ScriptIter.hs
@@ -37,9 +37,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
@@ -51,11 +51,15 @@
 noScriptIter :: Maybe ScriptIter
 noScriptIter = Nothing
 
+
+type instance AttributeList ScriptIter = ScriptIterAttributeList
+type ScriptIterAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method ScriptIter::free
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "ScriptIter", 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
 
@@ -82,7 +86,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "end", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "script", argType = TInterface "Pango" "Script", 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
 
@@ -126,7 +130,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "ScriptIter", 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
 
diff --git a/GI/Pango/Structs/ScriptIter.hs-boot b/GI/Pango/Structs/ScriptIter.hs-boot
--- a/GI/Pango/Structs/ScriptIter.hs-boot
+++ b/GI/Pango/Structs/ScriptIter.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.ScriptIter 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/Pango/Structs/TabArray.hs b/GI/Pango/Structs/TabArray.hs
--- a/GI/Pango/Structs/TabArray.hs
+++ b/GI/Pango/Structs/TabArray.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,16 +86,20 @@
 noTabArray :: Maybe TabArray
 noTabArray = Nothing
 
+
+type instance AttributeList TabArray = TabArrayAttributeList
+type TabArrayAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method TabArray::new
 -- method type : Constructor
--- Args : [Arg {argCName = "initial_size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "positions_in_pixels", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "initial_size", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "positions_in_pixels", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "TabArray"
+-- returnType : Just (TInterface "Pango" "TabArray")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "pango_tab_array_new" pango_tab_array_new :: 
-    Int32 ->                                -- initial_size : TBasicType TInt32
+    Int32 ->                                -- initial_size : TBasicType TInt
     CInt ->                                 -- positions_in_pixels : TBasicType TBoolean
     IO (Ptr TabArray)
 
@@ -116,7 +120,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "Pango" "TabArray"
+-- returnType : Just (TInterface "Pango" "TabArray")
 -- throws : False
 -- Skip return : False
 
@@ -145,7 +149,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", 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
 
@@ -172,7 +176,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", 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
 
@@ -200,7 +204,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", 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
 
@@ -225,17 +229,17 @@
 
 -- method TabArray::get_tab
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tab_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "alignment", argType = TInterface "Pango" "TabAlign", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "location", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tab_index", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "alignment", argType = TInterface "Pango" "TabAlign", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "location", 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 "pango_tab_array_get_tab" pango_tab_array_get_tab :: 
     Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
-    Int32 ->                                -- tab_index : TBasicType TInt32
+    Int32 ->                                -- tab_index : TBasicType TInt
     Ptr CUInt ->                            -- alignment : TInterface "Pango" "TabAlign"
-    Ptr Int32 ->                            -- location : TBasicType TInt32
+    Ptr Int32 ->                            -- location : TBasicType TInt
     IO ()
 
 
@@ -263,16 +267,16 @@
 
 -- method TabArray::get_tabs
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "alignments", argType = TInterface "Pango" "TabAlign", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "locations", argType = TCArray False (-1) (-1) (TBasicType TInt32), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "alignments", argType = TInterface "Pango" "TabAlign", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "locations", argType = TCArray False (-1) (-1) (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 "pango_tab_array_get_tabs" pango_tab_array_get_tabs :: 
     Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
     Ptr CUInt ->                            -- alignments : TInterface "Pango" "TabAlign"
-    Ptr (Ptr Int32) ->                      -- locations : TCArray False (-1) (-1) (TBasicType TInt32)
+    Ptr (Ptr Int32) ->                      -- locations : TCArray False (-1) (-1) (TBasicType TInt)
     IO ()
 
 
@@ -299,15 +303,15 @@
 
 -- method TabArray::resize
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_size", 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 "pango_tab_array_resize" pango_tab_array_resize :: 
     Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
-    Int32 ->                                -- new_size : TBasicType TInt32
+    Int32 ->                                -- new_size : TBasicType TInt
     IO ()
 
 
@@ -328,17 +332,17 @@
 
 -- method TabArray::set_tab
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tab_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "alignment", argType = TInterface "Pango" "TabAlign", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "location", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tab_index", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "alignment", argType = TInterface "Pango" "TabAlign", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "location", 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 "pango_tab_array_set_tab" pango_tab_array_set_tab :: 
     Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
-    Int32 ->                                -- tab_index : TBasicType TInt32
+    Int32 ->                                -- tab_index : TBasicType TInt
     CUInt ->                                -- alignment : TInterface "Pango" "TabAlign"
-    Int32 ->                                -- location : TBasicType TInt32
+    Int32 ->                                -- location : TBasicType TInt
     IO ()
 
 
diff --git a/GI/Pango/Structs/TabArray.hs-boot b/GI/Pango/Structs/TabArray.hs-boot
--- a/GI/Pango/Structs/TabArray.hs-boot
+++ b/GI/Pango/Structs/TabArray.hs-boot
@@ -1,8 +1,8 @@
 module GI.Pango.Structs.TabArray 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-pango.cabal b/gi-pango.cabal
--- a/gi-pango.cabal
+++ b/gi-pango.cabal
@@ -1,6 +1,6 @@
 -- Autogenerated, do not edit.
 name:               gi-pango
-version:            0.1.38.13
+version:            0.1.38.14
 synopsis:           Pango bindings
 description:        Bindings for Pango, 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.Pango.Types
@@ -79,9 +79,9 @@
                         GI.Pango.Structs.TabArray
     pkgconfig-depends:  pango >= 1.38
     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,
+        haskell-gi-base >= 0.14 && < 1,
+        gi-glib >= 0.2.46.14 && < 0.2.47,
+        gi-gobject >= 0.2.46.14 && < 0.2.47,
         bytestring >= 0.10,
         containers >= 0.5,
         text >= 1.0,
