diff --git a/GI/GIRepository.hs b/GI/GIRepository.hs
--- a/GI/GIRepository.hs
+++ b/GI/GIRepository.hs
@@ -30,9 +30,9 @@
 import GI.GIRepository.Structs
 import GI.GIRepository.Unions
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
diff --git a/GI/GIRepository/Callbacks.hs b/GI/GIRepository/Callbacks.hs
--- a/GI/GIRepository/Callbacks.hs
+++ b/GI/GIRepository/Callbacks.hs
@@ -8,9 +8,9 @@
 
 module GI.GIRepository.Callbacks () 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/GIRepository/Enums.hs b/GI/GIRepository/Enums.hs
--- a/GI/GIRepository/Enums.hs
+++ b/GI/GIRepository/Enums.hs
@@ -22,9 +22,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/GIRepository/Flags.hs b/GI/GIRepository/Flags.hs
--- a/GI/GIRepository/Flags.hs
+++ b/GI/GIRepository/Flags.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/GIRepository/Functions.hs b/GI/GIRepository/Functions.hs
--- a/GI/GIRepository/Functions.hs
+++ b/GI/GIRepository/Functions.hs
@@ -546,9 +546,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
@@ -560,7 +560,7 @@
 -- function g_vfunc_info_get_signal
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -585,7 +585,7 @@
 -- function g_vfunc_info_get_offset
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -608,7 +608,7 @@
 -- function g_vfunc_info_get_invoker
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -633,7 +633,7 @@
 -- function g_vfunc_info_get_flags
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "VFuncInfoFlags"
+-- returnType : Just (TInterface "GIRepository" "VFuncInfoFlags")
 -- throws : False
 -- Skip return : False
 
@@ -657,7 +657,7 @@
 -- function g_value_info_get_value
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TInt64
+-- returnType : Just (TBasicType TInt64)
 -- throws : False
 -- Skip return : False
 
@@ -680,7 +680,7 @@
 -- function g_union_info_is_discriminated
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -704,7 +704,7 @@
 -- function g_union_info_get_size
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt64
+-- returnType : Just (TBasicType TUInt64)
 -- throws : False
 -- Skip return : False
 
@@ -727,7 +727,7 @@
 -- function g_union_info_get_n_methods
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -750,7 +750,7 @@
 -- function g_union_info_get_n_fields
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -771,15 +771,15 @@
 
 
 -- function g_union_info_get_method
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_union_info_get_method" g_union_info_get_method :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -798,15 +798,15 @@
 
 
 -- function g_union_info_get_field
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_union_info_get_field" g_union_info_get_field :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -827,7 +827,7 @@
 -- function g_union_info_get_discriminator_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -852,7 +852,7 @@
 -- function g_union_info_get_discriminator_offset
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -873,15 +873,15 @@
 
 
 -- function g_union_info_get_discriminator
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_union_info_get_discriminator" g_union_info_get_discriminator :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -902,7 +902,7 @@
 -- function g_union_info_get_alignment
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt64
+-- returnType : Just (TBasicType TUInt64)
 -- throws : False
 -- Skip return : False
 
@@ -925,7 +925,7 @@
 -- function g_union_info_find_method
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -954,7 +954,7 @@
 -- function g_type_tag_to_string
 -- Args : [Arg {argCName = "type", argType = TInterface "GIRepository" "TypeTag", 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
 
@@ -978,7 +978,7 @@
 -- function g_type_info_is_zero_terminated
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1002,7 +1002,7 @@
 -- function g_type_info_is_pointer
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1026,7 +1026,7 @@
 -- function g_type_info_get_tag
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "TypeTag"
+-- returnType : Just (TInterface "GIRepository" "TypeTag")
 -- throws : False
 -- Skip return : False
 
@@ -1048,15 +1048,15 @@
 
 
 -- function g_type_info_get_param_type
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_type_info_get_param_type" g_type_info_get_param_type :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -1077,7 +1077,7 @@
 -- function g_type_info_get_interface
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -1102,7 +1102,7 @@
 -- function g_type_info_get_array_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "ArrayType"
+-- returnType : Just (TInterface "GIRepository" "ArrayType")
 -- throws : False
 -- Skip return : False
 
@@ -1126,7 +1126,7 @@
 -- function g_type_info_get_array_length
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1149,7 +1149,7 @@
 -- function g_type_info_get_array_fixed_size
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1172,7 +1172,7 @@
 -- function g_struct_info_is_gtype_struct
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1196,7 +1196,7 @@
 -- function g_struct_info_is_foreign
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1220,7 +1220,7 @@
 -- function g_struct_info_get_size
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt64
+-- returnType : Just (TBasicType TUInt64)
 -- throws : False
 -- Skip return : False
 
@@ -1243,7 +1243,7 @@
 -- function g_struct_info_get_n_methods
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1266,7 +1266,7 @@
 -- function g_struct_info_get_n_fields
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1287,15 +1287,15 @@
 
 
 -- function g_struct_info_get_method
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_struct_info_get_method" g_struct_info_get_method :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -1314,15 +1314,15 @@
 
 
 -- function g_struct_info_get_field
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_struct_info_get_field" g_struct_info_get_field :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -1343,7 +1343,7 @@
 -- function g_struct_info_get_alignment
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUInt64
+-- returnType : Just (TBasicType TUInt64)
 -- throws : False
 -- Skip return : False
 
@@ -1366,7 +1366,7 @@
 -- function g_struct_info_find_method
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -1395,7 +1395,7 @@
 -- function g_struct_info_find_field
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -1424,7 +1424,7 @@
 -- function g_signal_info_true_stops_emit
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -1448,7 +1448,7 @@
 -- function g_signal_info_get_flags
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GObject" "SignalFlags"
+-- returnType : Just (TInterface "GObject" "SignalFlags")
 -- throws : False
 -- Skip return : False
 
@@ -1472,7 +1472,7 @@
 -- function g_signal_info_get_class_closure
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -1497,7 +1497,7 @@
 -- function g_registered_type_info_get_type_name
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1522,7 +1522,7 @@
 -- function g_registered_type_info_get_type_init
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1547,7 +1547,7 @@
 -- function g_registered_type_info_get_g_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TGType
+-- returnType : Just (TBasicType TGType)
 -- throws : False
 -- Skip return : False
 
@@ -1571,7 +1571,7 @@
 -- function g_property_info_get_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -1596,7 +1596,7 @@
 -- function g_property_info_get_ownership_transfer
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "Transfer"
+-- returnType : Just (TInterface "GIRepository" "Transfer")
 -- throws : False
 -- Skip return : False
 
@@ -1620,7 +1620,7 @@
 -- function g_property_info_get_flags
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GObject" "ParamFlags"
+-- returnType : Just (TInterface "GObject" "ParamFlags")
 -- throws : False
 -- Skip return : False
 
@@ -1642,15 +1642,15 @@
 
 
 -- function g_object_info_get_vfunc
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_object_info_get_vfunc" g_object_info_get_vfunc :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -1671,7 +1671,7 @@
 -- function g_object_info_get_unref_function
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1696,7 +1696,7 @@
 -- function g_object_info_get_type_name
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1721,7 +1721,7 @@
 -- function g_object_info_get_type_init
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1744,15 +1744,15 @@
 
 
 -- function g_object_info_get_signal
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_object_info_get_signal" g_object_info_get_signal :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -1773,7 +1773,7 @@
 -- function g_object_info_get_set_value_function
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1798,7 +1798,7 @@
 -- function g_object_info_get_ref_function
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1821,15 +1821,15 @@
 
 
 -- function g_object_info_get_property
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_object_info_get_property" g_object_info_get_property :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -1850,7 +1850,7 @@
 -- function g_object_info_get_parent
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -1875,7 +1875,7 @@
 -- function g_object_info_get_n_vfuncs
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1898,7 +1898,7 @@
 -- function g_object_info_get_n_signals
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1921,7 +1921,7 @@
 -- function g_object_info_get_n_properties
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1944,7 +1944,7 @@
 -- function g_object_info_get_n_methods
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1967,7 +1967,7 @@
 -- function g_object_info_get_n_interfaces
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -1990,7 +1990,7 @@
 -- function g_object_info_get_n_fields
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2013,7 +2013,7 @@
 -- function g_object_info_get_n_constants
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2034,15 +2034,15 @@
 
 
 -- function g_object_info_get_method
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_object_info_get_method" g_object_info_get_method :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -2061,15 +2061,15 @@
 
 
 -- function g_object_info_get_interface
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_object_info_get_interface" g_object_info_get_interface :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -2090,7 +2090,7 @@
 -- function g_object_info_get_get_value_function
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2115,7 +2115,7 @@
 -- function g_object_info_get_fundamental
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2137,15 +2137,15 @@
 
 
 -- function g_object_info_get_field
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_object_info_get_field" g_object_info_get_field :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -2164,15 +2164,15 @@
 
 
 -- function g_object_info_get_constant
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_object_info_get_constant" g_object_info_get_constant :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -2193,7 +2193,7 @@
 -- function g_object_info_get_class_struct
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2218,7 +2218,7 @@
 -- function g_object_info_get_abstract
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2242,7 +2242,7 @@
 -- function g_object_info_find_vfunc_using_interfaces
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "implementor", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2274,7 +2274,7 @@
 -- function g_object_info_find_vfunc
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2303,7 +2303,7 @@
 -- function g_object_info_find_signal
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2332,7 +2332,7 @@
 -- function g_object_info_find_method_using_interfaces
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "implementor", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2364,7 +2364,7 @@
 -- function g_object_info_find_method
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2393,7 +2393,7 @@
 -- function g_invoke_error_quark
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt32)
 -- throws : False
 -- Skip return : False
 
@@ -2410,15 +2410,15 @@
 
 
 -- function g_interface_info_get_vfunc
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_interface_info_get_vfunc" g_interface_info_get_vfunc :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -2437,15 +2437,15 @@
 
 
 -- function g_interface_info_get_signal
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_interface_info_get_signal" g_interface_info_get_signal :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -2464,15 +2464,15 @@
 
 
 -- function g_interface_info_get_property
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_interface_info_get_property" g_interface_info_get_property :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -2491,15 +2491,15 @@
 
 
 -- function g_interface_info_get_prerequisite
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_interface_info_get_prerequisite" g_interface_info_get_prerequisite :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -2520,7 +2520,7 @@
 -- function g_interface_info_get_n_vfuncs
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2543,7 +2543,7 @@
 -- function g_interface_info_get_n_signals
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2566,7 +2566,7 @@
 -- function g_interface_info_get_n_properties
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2589,7 +2589,7 @@
 -- function g_interface_info_get_n_prerequisites
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2612,7 +2612,7 @@
 -- function g_interface_info_get_n_methods
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2635,7 +2635,7 @@
 -- function g_interface_info_get_n_constants
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2656,15 +2656,15 @@
 
 
 -- function g_interface_info_get_method
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_interface_info_get_method" g_interface_info_get_method :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -2685,7 +2685,7 @@
 -- function g_interface_info_get_iface_struct
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2708,15 +2708,15 @@
 
 
 -- function g_interface_info_get_constant
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_interface_info_get_constant" g_interface_info_get_constant :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -2737,7 +2737,7 @@
 -- function g_interface_info_find_vfunc
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2766,7 +2766,7 @@
 -- function g_interface_info_find_signal
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2795,7 +2795,7 @@
 -- function g_interface_info_find_method
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2824,7 +2824,7 @@
 -- function g_info_type_to_string
 -- Args : [Arg {argCName = "type", argType = TInterface "GIRepository" "InfoType", 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
 
@@ -2848,7 +2848,7 @@
 -- function g_info_new
 -- Args : [Arg {argCName = "type", argType = TInterface "GIRepository" "InfoType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "container", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "typelib", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2882,7 +2882,7 @@
 -- function g_function_info_get_vfunc
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2907,7 +2907,7 @@
 -- function g_function_info_get_symbol
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -2932,7 +2932,7 @@
 -- function g_function_info_get_property
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -2957,7 +2957,7 @@
 -- function g_function_info_get_flags
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "FunctionInfoFlags"
+-- returnType : Just (TInterface "GIRepository" "FunctionInfoFlags")
 -- throws : False
 -- Skip return : False
 
@@ -2981,7 +2981,7 @@
 -- function g_field_info_get_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -3006,7 +3006,7 @@
 -- function g_field_info_get_size
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3029,7 +3029,7 @@
 -- function g_field_info_get_offset
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3052,7 +3052,7 @@
 -- function g_field_info_get_flags
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "FieldInfoFlags"
+-- returnType : Just (TInterface "GIRepository" "FieldInfoFlags")
 -- throws : False
 -- Skip return : False
 
@@ -3074,15 +3074,15 @@
 
 
 -- function g_enum_info_get_value
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_enum_info_get_value" g_enum_info_get_value :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -3103,7 +3103,7 @@
 -- function g_enum_info_get_storage_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "TypeTag"
+-- returnType : Just (TInterface "GIRepository" "TypeTag")
 -- throws : False
 -- Skip return : False
 
@@ -3127,7 +3127,7 @@
 -- function g_enum_info_get_n_values
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3150,7 +3150,7 @@
 -- function g_enum_info_get_n_methods
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3171,15 +3171,15 @@
 
 
 -- function g_enum_info_get_method
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_enum_info_get_method" g_enum_info_get_method :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -3200,7 +3200,7 @@
 -- function g_enum_info_get_error_domain
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3225,7 +3225,7 @@
 -- function g_constant_info_get_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -3250,7 +3250,7 @@
 -- function g_callable_info_skip_return
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3274,7 +3274,7 @@
 -- function g_callable_info_may_return_null
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3298,7 +3298,7 @@
 -- function g_callable_info_load_return_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3322,15 +3322,15 @@
 
 
 -- function g_callable_info_load_arg
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "arg", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "arg", argType = TInterface "GIRepository" "BaseInfo", 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 "g_callable_info_load_arg" g_callable_info_load_arg :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     Ptr BaseInfo ->                         -- arg : TInterface "GIRepository" "BaseInfo"
     IO ()
 
@@ -3352,7 +3352,7 @@
 -- function g_callable_info_iterate_return_attributes
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iterator", argType = TInterface "GIRepository" "AttributeIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionOut, 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
 
@@ -3390,7 +3390,7 @@
 -- function g_callable_info_is_method
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3412,19 +3412,19 @@
 
 
 -- function g_callable_info_invoke
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "in_args", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_in_args", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "out_args", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_out_args", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "return_value", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "is_method", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "throws", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "in_args", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_in_args", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "out_args", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_out_args", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "return_value", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "is_method", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "throws", 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 : True
 -- Skip return : False
 
 foreign import ccall "g_callable_info_invoke" g_callable_info_invoke :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Ptr () ->                               -- function : TBasicType TVoid
+    Ptr () ->                               -- function : TBasicType TPtr
     Ptr Argument ->                         -- in_args : TInterface "GIRepository" "Argument"
-    Int32 ->                                -- n_in_args : TBasicType TInt32
+    Int32 ->                                -- n_in_args : TBasicType TInt
     Ptr Argument ->                         -- out_args : TInterface "GIRepository" "Argument"
-    Int32 ->                                -- n_out_args : TBasicType TInt32
+    Int32 ->                                -- n_out_args : TBasicType TInt
     Ptr Argument ->                         -- return_value : TInterface "GIRepository" "Argument"
     CInt ->                                 -- is_method : TBasicType TBoolean
     CInt ->                                 -- throws : TBasicType TBoolean
@@ -3466,7 +3466,7 @@
 -- function g_callable_info_get_return_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -3491,7 +3491,7 @@
 -- function g_callable_info_get_return_attribute
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -3520,7 +3520,7 @@
 -- function g_callable_info_get_n_args
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3543,7 +3543,7 @@
 -- function g_callable_info_get_instance_ownership_transfer
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "Transfer"
+-- returnType : Just (TInterface "GIRepository" "Transfer")
 -- throws : False
 -- Skip return : False
 
@@ -3567,7 +3567,7 @@
 -- function g_callable_info_get_caller_owns
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "Transfer"
+-- returnType : Just (TInterface "GIRepository" "Transfer")
 -- throws : False
 -- Skip return : False
 
@@ -3589,15 +3589,15 @@
 
 
 -- function g_callable_info_get_arg
--- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_callable_info_get_arg" g_callable_info_get_arg :: 
     Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
-    Int32 ->                                -- n : TBasicType TInt32
+    Int32 ->                                -- n : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
@@ -3618,7 +3618,7 @@
 -- function g_callable_info_can_throw_gerror
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3642,7 +3642,7 @@
 -- function g_arg_info_may_be_null
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3666,7 +3666,7 @@
 -- function g_arg_info_load_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3692,7 +3692,7 @@
 -- function g_arg_info_is_skip
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3716,7 +3716,7 @@
 -- function g_arg_info_is_return_value
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3740,7 +3740,7 @@
 -- function g_arg_info_is_optional
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3764,7 +3764,7 @@
 -- function g_arg_info_is_caller_allocates
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3788,7 +3788,7 @@
 -- function g_arg_info_get_type
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -3813,7 +3813,7 @@
 -- function g_arg_info_get_scope
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "ScopeType"
+-- returnType : Just (TInterface "GIRepository" "ScopeType")
 -- throws : False
 -- Skip return : False
 
@@ -3837,7 +3837,7 @@
 -- function g_arg_info_get_ownership_transfer
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "Transfer"
+-- returnType : Just (TInterface "GIRepository" "Transfer")
 -- throws : False
 -- Skip return : False
 
@@ -3861,7 +3861,7 @@
 -- function g_arg_info_get_direction
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "Direction"
+-- returnType : Just (TInterface "GIRepository" "Direction")
 -- throws : False
 -- Skip return : False
 
@@ -3885,7 +3885,7 @@
 -- function g_arg_info_get_destroy
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -3908,7 +3908,7 @@
 -- function g_arg_info_get_closure
 -- Args : [Arg {argCName = "info", argType = TInterface "GIRepository" "BaseInfo", 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/GIRepository/Objects.hs b/GI/GIRepository/Objects.hs
--- a/GI/GIRepository/Objects.hs
+++ b/GI/GIRepository/Objects.hs
@@ -14,9 +14,9 @@
 
 import GI.GIRepository.Objects.Repository
 
-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/GIRepository/Objects/Repository.hs b/GI/GIRepository/Objects/Repository.hs
--- a/GI/GIRepository/Objects/Repository.hs
+++ b/GI/GIRepository/Objects/Repository.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
@@ -222,7 +222,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TGList (TBasicType TUTF8)
+-- returnType : Just (TGList (TBasicType TUTF8))
 -- throws : False
 -- Skip return : False
 
@@ -235,19 +235,18 @@
 repositoryEnumerateVersions ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> m [T.Text]                           -- result
-repositoryEnumerateVersions _obj namespace = liftIO $ do
+repositoryEnumerateVersions _obj namespace_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
-    result <- g_irepository_enumerate_versions _obj' namespace'
-    checkUnexpectedReturnNULL "g_irepository_enumerate_versions" result
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_enumerate_versions _obj' namespace_'
     result' <- unpackGList result
     result'' <- mapM cstringToText result'
     mapGList freeMem result
     g_list_free result
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     return result''
 
 data RepositoryEnumerateVersionsMethodInfo
@@ -258,7 +257,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "domain", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -289,7 +288,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "gtype", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -321,7 +320,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -335,18 +334,18 @@
 repositoryFindByName ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> T.Text                               -- name
     -> m BaseInfo                           -- result
-repositoryFindByName _obj namespace name = liftIO $ do
+repositoryFindByName _obj namespace_ name = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
+    namespace_' <- textToCString namespace_
     name' <- textToCString name
-    result <- g_irepository_find_by_name _obj' namespace' name'
+    result <- g_irepository_find_by_name _obj' namespace_' name'
     checkUnexpectedReturnNULL "g_irepository_find_by_name" result
     result' <- (wrapBoxed BaseInfo) result
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     freeMem name'
     return result'
 
@@ -358,7 +357,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", 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
 
@@ -371,16 +370,16 @@
 repositoryGetCPrefix ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> m T.Text                             -- result
-repositoryGetCPrefix _obj namespace = liftIO $ do
+repositoryGetCPrefix _obj namespace_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
-    result <- g_irepository_get_c_prefix _obj' namespace'
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_c_prefix _obj' namespace_'
     checkUnexpectedReturnNULL "g_irepository_get_c_prefix" result
     result' <- cstringToText result
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     return result'
 
 data RepositoryGetCPrefixMethodInfo
@@ -391,7 +390,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", 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
 
@@ -404,18 +403,18 @@
 repositoryGetDependencies ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> m [T.Text]                           -- result
-repositoryGetDependencies _obj namespace = liftIO $ do
+repositoryGetDependencies _obj namespace_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
-    result <- g_irepository_get_dependencies _obj' namespace'
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_dependencies _obj' namespace_'
     checkUnexpectedReturnNULL "g_irepository_get_dependencies" result
     result' <- unpackZeroTerminatedUTF8CArray result
     mapZeroTerminatedCArray freeMem result
     freeMem result
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     return result'
 
 data RepositoryGetDependenciesMethodInfo
@@ -426,7 +425,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", 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
 
@@ -439,18 +438,18 @@
 repositoryGetImmediateDependencies ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> m [T.Text]                           -- result
-repositoryGetImmediateDependencies _obj namespace = liftIO $ do
+repositoryGetImmediateDependencies _obj namespace_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
-    result <- g_irepository_get_immediate_dependencies _obj' namespace'
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_immediate_dependencies _obj' namespace_'
     checkUnexpectedReturnNULL "g_irepository_get_immediate_dependencies" result
     result' <- unpackZeroTerminatedUTF8CArray result
     mapZeroTerminatedCArray freeMem result
     freeMem result
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     return result'
 
 data RepositoryGetImmediateDependenciesMethodInfo
@@ -459,33 +458,33 @@
 
 -- method Repository::get_info
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", argType = TBasicType TUTF8, 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 "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", argType = TBasicType TUTF8, 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 "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_irepository_get_info" g_irepository_get_info :: 
     Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
     CString ->                              -- namespace_ : TBasicType TUTF8
-    Int32 ->                                -- index : TBasicType TInt32
+    Int32 ->                                -- index : TBasicType TInt
     IO (Ptr BaseInfo)
 
 
 repositoryGetInfo ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> Int32                                -- index
     -> m BaseInfo                           -- result
-repositoryGetInfo _obj namespace index = liftIO $ do
+repositoryGetInfo _obj namespace_ index = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
-    result <- g_irepository_get_info _obj' namespace' index
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_info _obj' namespace_' index
     checkUnexpectedReturnNULL "g_irepository_get_info" result
     result' <- (wrapBoxed BaseInfo) result
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     return result'
 
 data RepositoryGetInfoMethodInfo
@@ -496,7 +495,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", 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
 
@@ -527,7 +526,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", argType = TBasicType TUTF8, 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
 
@@ -540,14 +539,14 @@
 repositoryGetNInfos ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> m Int32                              -- result
-repositoryGetNInfos _obj namespace = liftIO $ do
+repositoryGetNInfos _obj namespace_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
-    result <- g_irepository_get_n_infos _obj' namespace'
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_n_infos _obj' namespace_'
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     return result
 
 data RepositoryGetNInfosMethodInfo
@@ -558,7 +557,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", 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
 
@@ -571,16 +570,16 @@
 repositoryGetSharedLibrary ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> m T.Text                             -- result
-repositoryGetSharedLibrary _obj namespace = liftIO $ do
+repositoryGetSharedLibrary _obj namespace_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
-    result <- g_irepository_get_shared_library _obj' namespace'
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_shared_library _obj' namespace_'
     checkUnexpectedReturnNULL "g_irepository_get_shared_library" result
     result' <- cstringToText result
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     return result'
 
 data RepositoryGetSharedLibraryMethodInfo
@@ -591,7 +590,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", 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
 
@@ -604,16 +603,16 @@
 repositoryGetTypelibPath ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> m T.Text                             -- result
-repositoryGetTypelibPath _obj namespace = liftIO $ do
+repositoryGetTypelibPath _obj namespace_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
-    result <- g_irepository_get_typelib_path _obj' namespace'
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_typelib_path _obj' namespace_'
     checkUnexpectedReturnNULL "g_irepository_get_typelib_path" result
     result' <- cstringToText result
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     return result'
 
 data RepositoryGetTypelibPathMethodInfo
@@ -624,7 +623,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", 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
 
@@ -637,16 +636,16 @@
 repositoryGetVersion ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> m T.Text                             -- result
-repositoryGetVersion _obj namespace = liftIO $ do
+repositoryGetVersion _obj namespace_ = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
-    result <- g_irepository_get_version _obj' namespace'
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_version _obj' namespace_'
     checkUnexpectedReturnNULL "g_irepository_get_version" result
     result' <- cstringToText result
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     return result'
 
 data RepositoryGetVersionMethodInfo
@@ -657,7 +656,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "version", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
@@ -671,21 +670,21 @@
 repositoryIsRegistered ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> Maybe (T.Text)                       -- version
     -> m Bool                               -- result
-repositoryIsRegistered _obj namespace version = liftIO $ do
+repositoryIsRegistered _obj namespace_ version = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
+    namespace_' <- textToCString namespace_
     maybeVersion <- case version of
         Nothing -> return nullPtr
         Just jVersion -> do
             jVersion' <- textToCString jVersion
             return jVersion'
-    result <- g_irepository_is_registered _obj' namespace' maybeVersion
+    result <- g_irepository_is_registered _obj' namespace_' maybeVersion
     let result' = (/= 0) result
     touchManagedPtr _obj
-    freeMem namespace'
+    freeMem namespace_'
     freeMem maybeVersion
     return result'
 
@@ -697,7 +696,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "typelib", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "GIRepository" "RepositoryLoadFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : True
 -- Skip return : False
 
@@ -738,7 +737,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "version", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "GIRepository" "RepositoryLoadFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "Typelib"
+-- returnType : Just (TInterface "GIRepository" "Typelib")
 -- throws : True
 -- Skip return : False
 
@@ -754,13 +753,13 @@
 repositoryRequire ::
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> Maybe (T.Text)                       -- version
     -> [RepositoryLoadFlags]                -- flags
     -> m Typelib                            -- result
-repositoryRequire _obj namespace version flags = liftIO $ do
+repositoryRequire _obj namespace_ version flags = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
-    namespace' <- textToCString namespace
+    namespace_' <- textToCString namespace_
     maybeVersion <- case version of
         Nothing -> return nullPtr
         Just jVersion -> do
@@ -768,16 +767,16 @@
             return jVersion'
     let flags' = gflagsToWord flags
     onException (do
-        result <- propagateGError $ g_irepository_require _obj' namespace' maybeVersion flags'
+        result <- propagateGError $ g_irepository_require _obj' namespace_' maybeVersion flags'
         checkUnexpectedReturnNULL "g_irepository_require" result
         -- XXX Wrapping a foreign struct/union with no known destructor, leak?
         result' <- (\x -> Typelib <$> newForeignPtr_ x) result
         touchManagedPtr _obj
-        freeMem namespace'
+        freeMem namespace_'
         freeMem maybeVersion
         return result'
      ) (do
-        freeMem namespace'
+        freeMem namespace_'
         freeMem maybeVersion
      )
 
@@ -789,7 +788,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "typelib_dir", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "version", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "GIRepository" "RepositoryLoadFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "Typelib"
+-- returnType : Just (TInterface "GIRepository" "Typelib")
 -- throws : True
 -- Skip return : False
 
@@ -807,14 +806,14 @@
     (MonadIO m, RepositoryK a) =>
     a                                       -- _obj
     -> T.Text                               -- typelibDir
-    -> T.Text                               -- namespace
+    -> T.Text                               -- namespace_
     -> Maybe (T.Text)                       -- version
     -> [RepositoryLoadFlags]                -- flags
     -> m Typelib                            -- result
-repositoryRequirePrivate _obj typelibDir namespace version flags = liftIO $ do
+repositoryRequirePrivate _obj typelibDir namespace_ version flags = liftIO $ do
     let _obj' = unsafeManagedPtrCastPtr _obj
     typelibDir' <- textToCString typelibDir
-    namespace' <- textToCString namespace
+    namespace_' <- textToCString namespace_
     maybeVersion <- case version of
         Nothing -> return nullPtr
         Just jVersion -> do
@@ -822,18 +821,18 @@
             return jVersion'
     let flags' = gflagsToWord flags
     onException (do
-        result <- propagateGError $ g_irepository_require_private _obj' typelibDir' namespace' maybeVersion flags'
+        result <- propagateGError $ g_irepository_require_private _obj' typelibDir' namespace_' maybeVersion flags'
         checkUnexpectedReturnNULL "g_irepository_require_private" result
         -- XXX Wrapping a foreign struct/union with no known destructor, leak?
         result' <- (\x -> Typelib <$> newForeignPtr_ x) result
         touchManagedPtr _obj
         freeMem typelibDir'
-        freeMem namespace'
+        freeMem namespace_'
         freeMem maybeVersion
         return result'
      ) (do
         freeMem typelibDir'
-        freeMem namespace'
+        freeMem namespace_'
         freeMem maybeVersion
      )
 
@@ -845,7 +844,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "arg", 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 : True
 -- Skip return : False
 
@@ -873,7 +872,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TUInt32
+-- returnType : Just (TBasicType TUInt32)
 -- throws : False
 -- Skip return : False
 
@@ -892,7 +891,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TInterface "GIRepository" "Repository"
+-- returnType : Just (TInterface "GIRepository" "Repository")
 -- throws : False
 -- Skip return : False
 
@@ -913,7 +912,7 @@
 -- method type : MemberFunction
 -- Args : []
 -- Lengths : []
--- returnType : TGSList (TBasicType TFileName)
+-- returnType : Just (TGSList (TBasicType TFileName))
 -- throws : False
 -- Skip return : False
 
@@ -926,7 +925,6 @@
     m [[Char]]                              -- result
 repositoryGetSearchPath  = liftIO $ do
     result <- g_irepository_get_search_path
-    checkUnexpectedReturnNULL "g_irepository_get_search_path" result
     result' <- unpackGSList result
     result'' <- mapM cstringToString result'
     return result''
@@ -935,7 +933,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "directory", 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
 
@@ -958,7 +956,7 @@
 -- method type : MemberFunction
 -- Args : [Arg {argCName = "directory", argType = TBasicType TFileName, 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/GIRepository/Objects/Repository.hs-boot b/GI/GIRepository/Objects/Repository.hs-boot
--- a/GI/GIRepository/Objects/Repository.hs-boot
+++ b/GI/GIRepository/Objects/Repository.hs-boot
@@ -1,8 +1,8 @@
 module GI.GIRepository.Objects.Repository 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/GIRepository/Structs.hs b/GI/GIRepository/Structs.hs
--- a/GI/GIRepository/Structs.hs
+++ b/GI/GIRepository/Structs.hs
@@ -20,9 +20,9 @@
 import GI.GIRepository.Structs.Typelib
 import GI.GIRepository.Structs.UnresolvedInfo
 
-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/GIRepository/Structs/AttributeIter.hs b/GI/GIRepository/Structs/AttributeIter.hs
--- a/GI/GIRepository/Structs/AttributeIter.hs
+++ b/GI/GIRepository/Structs/AttributeIter.hs
@@ -20,9 +20,9 @@
 
     ) where
 
-import Prelude ()
 import Data.GI.Base.ShortPrelude
 
+import qualified Data.GI.Base.Attributes as GI.Attributes
 import qualified Data.Text as T
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Map as Map
@@ -35,8 +35,19 @@
 newZeroAttributeIter :: MonadIO m => m AttributeIter
 newZeroAttributeIter = liftIO $ callocBytes 32 >>= wrapPtr AttributeIter
 
+instance tag ~ 'AttrSet => Constructible AttributeIter tag where
+    new _ attrs = do
+        o <- newZeroAttributeIter
+        GI.Attributes.set o attrs
+        return o
+
+
 noAttributeIter :: Maybe AttributeIter
 noAttributeIter = Nothing
+
+
+type instance AttributeList AttributeIter = AttributeIterAttributeList
+type AttributeIterAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveAttributeIterMethod (t :: Symbol) (o :: *) :: * where
     ResolveAttributeIterMethod l o = MethodResolutionFailed l o
diff --git a/GI/GIRepository/Structs/AttributeIter.hs-boot b/GI/GIRepository/Structs/AttributeIter.hs-boot
--- a/GI/GIRepository/Structs/AttributeIter.hs-boot
+++ b/GI/GIRepository/Structs/AttributeIter.hs-boot
@@ -1,8 +1,8 @@
 module GI.GIRepository.Structs.AttributeIter 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/GIRepository/Structs/BaseInfo.hs b/GI/GIRepository/Structs/BaseInfo.hs
--- a/GI/GIRepository/Structs/BaseInfo.hs
+++ b/GI/GIRepository/Structs/BaseInfo.hs
@@ -103,9 +103,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
@@ -124,14 +124,25 @@
 newZeroBaseInfo :: MonadIO m => m BaseInfo
 newZeroBaseInfo = liftIO $ callocBoxedBytes 72 >>= wrapBoxed BaseInfo
 
+instance tag ~ 'AttrSet => Constructible BaseInfo tag where
+    new _ attrs = do
+        o <- newZeroBaseInfo
+        GI.Attributes.set o attrs
+        return o
+
+
 noBaseInfo :: Maybe BaseInfo
 noBaseInfo = Nothing
 
+
+type instance AttributeList BaseInfo = BaseInfoAttributeList
+type BaseInfoAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method BaseInfo::equal
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "info2", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -163,7 +174,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TUTF8
+-- returnType : Just (TBasicType TUTF8)
 -- throws : False
 -- Skip return : False
 
@@ -196,7 +207,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "BaseInfo"
+-- returnType : Just (TInterface "GIRepository" "BaseInfo")
 -- throws : False
 -- Skip return : False
 
@@ -225,7 +236,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -254,7 +265,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -283,7 +294,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "InfoType"
+-- returnType : Just (TInterface "GIRepository" "InfoType")
 -- throws : False
 -- Skip return : False
 
@@ -311,7 +322,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TInterface "GIRepository" "Typelib"
+-- returnType : Just (TInterface "GIRepository" "Typelib")
 -- throws : False
 -- Skip return : False
 
@@ -341,7 +352,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "BaseInfo", 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
 
@@ -369,7 +380,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iterator", argType = TInterface "GIRepository" "AttributeIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionOut, 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/GIRepository/Structs/BaseInfo.hs-boot b/GI/GIRepository/Structs/BaseInfo.hs-boot
--- a/GI/GIRepository/Structs/BaseInfo.hs-boot
+++ b/GI/GIRepository/Structs/BaseInfo.hs-boot
@@ -1,8 +1,8 @@
 module GI.GIRepository.Structs.BaseInfo 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/GIRepository/Structs/Typelib.hs b/GI/GIRepository/Structs/Typelib.hs
--- a/GI/GIRepository/Structs/Typelib.hs
+++ b/GI/GIRepository/Structs/Typelib.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
@@ -50,11 +50,15 @@
 noTypelib :: Maybe Typelib
 noTypelib = Nothing
 
+
+type instance AttributeList Typelib = TypelibAttributeList
+type TypelibAttributeList = ('[ ] :: [(Symbol, *)])
+
 -- method Typelib::free
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Typelib", 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
 
@@ -81,7 +85,7 @@
 -- method type : OrdinaryMethod
 -- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Typelib", 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
 
@@ -108,16 +112,16 @@
 
 -- method Typelib::symbol
 -- method type : OrdinaryMethod
--- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "symbol_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "symbol", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
+-- Args : [Arg {argCName = "_obj", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "symbol_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "symbol", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
 -- Lengths : []
--- returnType : TBasicType TBoolean
+-- returnType : Just (TBasicType TBoolean)
 -- throws : False
 -- Skip return : False
 
 foreign import ccall "g_typelib_symbol" g_typelib_symbol :: 
     Ptr Typelib ->                          -- _obj : TInterface "GIRepository" "Typelib"
     CString ->                              -- symbol_name : TBasicType TUTF8
-    Ptr () ->                               -- symbol : TBasicType TVoid
+    Ptr () ->                               -- symbol : TBasicType TPtr
     IO CInt
 
 
diff --git a/GI/GIRepository/Structs/Typelib.hs-boot b/GI/GIRepository/Structs/Typelib.hs-boot
--- a/GI/GIRepository/Structs/Typelib.hs-boot
+++ b/GI/GIRepository/Structs/Typelib.hs-boot
@@ -1,8 +1,8 @@
 module GI.GIRepository.Structs.Typelib 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/GIRepository/Structs/UnresolvedInfo.hs b/GI/GIRepository/Structs/UnresolvedInfo.hs
--- a/GI/GIRepository/Structs/UnresolvedInfo.hs
+++ b/GI/GIRepository/Structs/UnresolvedInfo.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
@@ -31,6 +31,10 @@
 newtype UnresolvedInfo = UnresolvedInfo (ForeignPtr UnresolvedInfo)
 noUnresolvedInfo :: Maybe UnresolvedInfo
 noUnresolvedInfo = Nothing
+
+
+type instance AttributeList UnresolvedInfo = UnresolvedInfoAttributeList
+type UnresolvedInfoAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveUnresolvedInfoMethod (t :: Symbol) (o :: *) :: * where
     ResolveUnresolvedInfoMethod l o = MethodResolutionFailed l o
diff --git a/GI/GIRepository/Structs/UnresolvedInfo.hs-boot b/GI/GIRepository/Structs/UnresolvedInfo.hs-boot
--- a/GI/GIRepository/Structs/UnresolvedInfo.hs-boot
+++ b/GI/GIRepository/Structs/UnresolvedInfo.hs-boot
@@ -1,8 +1,8 @@
 module GI.GIRepository.Structs.UnresolvedInfo 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/GIRepository/Unions.hs b/GI/GIRepository/Unions.hs
--- a/GI/GIRepository/Unions.hs
+++ b/GI/GIRepository/Unions.hs
@@ -14,9 +14,9 @@
 
 import GI.GIRepository.Unions.Argument
 
-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/GIRepository/Unions/Argument.hs b/GI/GIRepository/Unions/Argument.hs
--- a/GI/GIRepository/Unions/Argument.hs
+++ b/GI/GIRepository/Unions/Argument.hs
@@ -18,95 +18,139 @@
  -- * Properties
 -- ** VBoolean
     argumentReadVBoolean                    ,
+    argumentVBoolean                        ,
+    argumentWriteVBoolean                   ,
 
 
 -- ** VDouble
     argumentReadVDouble                     ,
+    argumentVDouble                         ,
+    argumentWriteVDouble                    ,
 
 
 -- ** VFloat
     argumentReadVFloat                      ,
+    argumentVFloat                          ,
+    argumentWriteVFloat                     ,
 
 
 -- ** VInt
     argumentReadVInt                        ,
+    argumentVInt                            ,
+    argumentWriteVInt                       ,
 
 
 -- ** VInt16
     argumentReadVInt16                      ,
+    argumentVInt16                          ,
+    argumentWriteVInt16                     ,
 
 
 -- ** VInt32
     argumentReadVInt32                      ,
+    argumentVInt32                          ,
+    argumentWriteVInt32                     ,
 
 
 -- ** VInt64
     argumentReadVInt64                      ,
+    argumentVInt64                          ,
+    argumentWriteVInt64                     ,
 
 
 -- ** VInt8
     argumentReadVInt8                       ,
+    argumentVInt8                           ,
+    argumentWriteVInt8                      ,
 
 
 -- ** VLong
     argumentReadVLong                       ,
+    argumentVLong                           ,
+    argumentWriteVLong                      ,
 
 
 -- ** VPointer
+    argumentClearVPointer                   ,
     argumentReadVPointer                    ,
+    argumentVPointer                        ,
+    argumentWriteVPointer                   ,
 
 
 -- ** VShort
     argumentReadVShort                      ,
+    argumentVShort                          ,
+    argumentWriteVShort                     ,
 
 
 -- ** VSize
     argumentReadVSize                       ,
+    argumentVSize                           ,
+    argumentWriteVSize                      ,
 
 
 -- ** VSsize
     argumentReadVSsize                      ,
+    argumentVSsize                          ,
+    argumentWriteVSsize                     ,
 
 
 -- ** VString
+    argumentClearVString                    ,
     argumentReadVString                     ,
+    argumentVString                         ,
+    argumentWriteVString                    ,
 
 
 -- ** VUint
     argumentReadVUint                       ,
+    argumentVUint                           ,
+    argumentWriteVUint                      ,
 
 
 -- ** VUint16
     argumentReadVUint16                     ,
+    argumentVUint16                         ,
+    argumentWriteVUint16                    ,
 
 
 -- ** VUint32
     argumentReadVUint32                     ,
+    argumentVUint32                         ,
+    argumentWriteVUint32                    ,
 
 
 -- ** VUint64
     argumentReadVUint64                     ,
+    argumentVUint64                         ,
+    argumentWriteVUint64                    ,
 
 
 -- ** VUint8
     argumentReadVUint8                      ,
+    argumentVUint8                          ,
+    argumentWriteVUint8                     ,
 
 
 -- ** VUlong
     argumentReadVUlong                      ,
+    argumentVUlong                          ,
+    argumentWriteVUlong                     ,
 
 
 -- ** VUshort
     argumentReadVUshort                     ,
+    argumentVUshort                         ,
+    argumentWriteVUshort                    ,
 
 
 
 
     ) 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
@@ -119,117 +163,561 @@
 newZeroArgument :: MonadIO m => m Argument
 newZeroArgument = liftIO $ callocBytes 8 >>= wrapPtr Argument
 
+instance tag ~ 'AttrSet => Constructible Argument tag where
+    new _ attrs = do
+        o <- newZeroArgument
+        GI.Attributes.set o attrs
+        return o
+
+
 noArgument :: Maybe Argument
 noArgument = Nothing
 
-argumentReadVBoolean :: Argument -> IO Bool
-argumentReadVBoolean s = withManagedPtr s $ \ptr -> do
+argumentReadVBoolean :: MonadIO m => Argument -> m Bool
+argumentReadVBoolean s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CInt
     let val' = (/= 0) val
     return val'
 
-argumentReadVInt8 :: Argument -> IO Int8
-argumentReadVInt8 s = withManagedPtr s $ \ptr -> do
+argumentWriteVBoolean :: MonadIO m => Argument -> Bool -> m ()
+argumentWriteVBoolean s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = (fromIntegral . fromEnum) val
+    poke (ptr `plusPtr` 0) (val' :: CInt)
+
+data ArgumentVBooleanFieldInfo
+instance AttrInfo ArgumentVBooleanFieldInfo where
+    type AttrAllowedOps ArgumentVBooleanFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVBooleanFieldInfo = (~) Bool
+    type AttrBaseTypeConstraint ArgumentVBooleanFieldInfo = (~) Argument
+    type AttrGetType ArgumentVBooleanFieldInfo = Bool
+    type AttrLabel ArgumentVBooleanFieldInfo = "v_boolean"
+    attrGet _ = argumentReadVBoolean
+    attrSet _ = argumentWriteVBoolean
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVBoolean :: AttrLabelProxy "vBoolean"
+argumentVBoolean = AttrLabelProxy
+
+
+argumentReadVInt8 :: MonadIO m => Argument -> m Int8
+argumentReadVInt8 s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int8
     return val
 
-argumentReadVUint8 :: Argument -> IO Word8
-argumentReadVUint8 s = withManagedPtr s $ \ptr -> do
+argumentWriteVInt8 :: MonadIO m => Argument -> Int8 -> m ()
+argumentWriteVInt8 s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int8)
+
+data ArgumentVInt8FieldInfo
+instance AttrInfo ArgumentVInt8FieldInfo where
+    type AttrAllowedOps ArgumentVInt8FieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVInt8FieldInfo = (~) Int8
+    type AttrBaseTypeConstraint ArgumentVInt8FieldInfo = (~) Argument
+    type AttrGetType ArgumentVInt8FieldInfo = Int8
+    type AttrLabel ArgumentVInt8FieldInfo = "v_int8"
+    attrGet _ = argumentReadVInt8
+    attrSet _ = argumentWriteVInt8
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVInt8 :: AttrLabelProxy "vInt8"
+argumentVInt8 = AttrLabelProxy
+
+
+argumentReadVUint8 :: MonadIO m => Argument -> m Word8
+argumentReadVUint8 s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word8
     return val
 
-argumentReadVInt16 :: Argument -> IO Int16
-argumentReadVInt16 s = withManagedPtr s $ \ptr -> do
+argumentWriteVUint8 :: MonadIO m => Argument -> Word8 -> m ()
+argumentWriteVUint8 s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word8)
+
+data ArgumentVUint8FieldInfo
+instance AttrInfo ArgumentVUint8FieldInfo where
+    type AttrAllowedOps ArgumentVUint8FieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVUint8FieldInfo = (~) Word8
+    type AttrBaseTypeConstraint ArgumentVUint8FieldInfo = (~) Argument
+    type AttrGetType ArgumentVUint8FieldInfo = Word8
+    type AttrLabel ArgumentVUint8FieldInfo = "v_uint8"
+    attrGet _ = argumentReadVUint8
+    attrSet _ = argumentWriteVUint8
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVUint8 :: AttrLabelProxy "vUint8"
+argumentVUint8 = AttrLabelProxy
+
+
+argumentReadVInt16 :: MonadIO m => Argument -> m Int16
+argumentReadVInt16 s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int16
     return val
 
-argumentReadVUint16 :: Argument -> IO Word16
-argumentReadVUint16 s = withManagedPtr s $ \ptr -> do
+argumentWriteVInt16 :: MonadIO m => Argument -> Int16 -> m ()
+argumentWriteVInt16 s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int16)
+
+data ArgumentVInt16FieldInfo
+instance AttrInfo ArgumentVInt16FieldInfo where
+    type AttrAllowedOps ArgumentVInt16FieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVInt16FieldInfo = (~) Int16
+    type AttrBaseTypeConstraint ArgumentVInt16FieldInfo = (~) Argument
+    type AttrGetType ArgumentVInt16FieldInfo = Int16
+    type AttrLabel ArgumentVInt16FieldInfo = "v_int16"
+    attrGet _ = argumentReadVInt16
+    attrSet _ = argumentWriteVInt16
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVInt16 :: AttrLabelProxy "vInt16"
+argumentVInt16 = AttrLabelProxy
+
+
+argumentReadVUint16 :: MonadIO m => Argument -> m Word16
+argumentReadVUint16 s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word16
     return val
 
-argumentReadVInt32 :: Argument -> IO Int32
-argumentReadVInt32 s = withManagedPtr s $ \ptr -> do
+argumentWriteVUint16 :: MonadIO m => Argument -> Word16 -> m ()
+argumentWriteVUint16 s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word16)
+
+data ArgumentVUint16FieldInfo
+instance AttrInfo ArgumentVUint16FieldInfo where
+    type AttrAllowedOps ArgumentVUint16FieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVUint16FieldInfo = (~) Word16
+    type AttrBaseTypeConstraint ArgumentVUint16FieldInfo = (~) Argument
+    type AttrGetType ArgumentVUint16FieldInfo = Word16
+    type AttrLabel ArgumentVUint16FieldInfo = "v_uint16"
+    attrGet _ = argumentReadVUint16
+    attrSet _ = argumentWriteVUint16
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVUint16 :: AttrLabelProxy "vUint16"
+argumentVUint16 = AttrLabelProxy
+
+
+argumentReadVInt32 :: MonadIO m => Argument -> m Int32
+argumentReadVInt32 s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int32
     return val
 
-argumentReadVUint32 :: Argument -> IO Word32
-argumentReadVUint32 s = withManagedPtr s $ \ptr -> do
+argumentWriteVInt32 :: MonadIO m => Argument -> Int32 -> m ()
+argumentWriteVInt32 s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int32)
+
+data ArgumentVInt32FieldInfo
+instance AttrInfo ArgumentVInt32FieldInfo where
+    type AttrAllowedOps ArgumentVInt32FieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVInt32FieldInfo = (~) Int32
+    type AttrBaseTypeConstraint ArgumentVInt32FieldInfo = (~) Argument
+    type AttrGetType ArgumentVInt32FieldInfo = Int32
+    type AttrLabel ArgumentVInt32FieldInfo = "v_int32"
+    attrGet _ = argumentReadVInt32
+    attrSet _ = argumentWriteVInt32
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVInt32 :: AttrLabelProxy "vInt32"
+argumentVInt32 = AttrLabelProxy
+
+
+argumentReadVUint32 :: MonadIO m => Argument -> m Word32
+argumentReadVUint32 s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word32
     return val
 
-argumentReadVInt64 :: Argument -> IO Int64
-argumentReadVInt64 s = withManagedPtr s $ \ptr -> do
+argumentWriteVUint32 :: MonadIO m => Argument -> Word32 -> m ()
+argumentWriteVUint32 s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word32)
+
+data ArgumentVUint32FieldInfo
+instance AttrInfo ArgumentVUint32FieldInfo where
+    type AttrAllowedOps ArgumentVUint32FieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVUint32FieldInfo = (~) Word32
+    type AttrBaseTypeConstraint ArgumentVUint32FieldInfo = (~) Argument
+    type AttrGetType ArgumentVUint32FieldInfo = Word32
+    type AttrLabel ArgumentVUint32FieldInfo = "v_uint32"
+    attrGet _ = argumentReadVUint32
+    attrSet _ = argumentWriteVUint32
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVUint32 :: AttrLabelProxy "vUint32"
+argumentVUint32 = AttrLabelProxy
+
+
+argumentReadVInt64 :: MonadIO m => Argument -> m Int64
+argumentReadVInt64 s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int64
     return val
 
-argumentReadVUint64 :: Argument -> IO Word64
-argumentReadVUint64 s = withManagedPtr s $ \ptr -> do
+argumentWriteVInt64 :: MonadIO m => Argument -> Int64 -> m ()
+argumentWriteVInt64 s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int64)
+
+data ArgumentVInt64FieldInfo
+instance AttrInfo ArgumentVInt64FieldInfo where
+    type AttrAllowedOps ArgumentVInt64FieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVInt64FieldInfo = (~) Int64
+    type AttrBaseTypeConstraint ArgumentVInt64FieldInfo = (~) Argument
+    type AttrGetType ArgumentVInt64FieldInfo = Int64
+    type AttrLabel ArgumentVInt64FieldInfo = "v_int64"
+    attrGet _ = argumentReadVInt64
+    attrSet _ = argumentWriteVInt64
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVInt64 :: AttrLabelProxy "vInt64"
+argumentVInt64 = AttrLabelProxy
+
+
+argumentReadVUint64 :: MonadIO m => Argument -> m Word64
+argumentReadVUint64 s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word64
     return val
 
-argumentReadVFloat :: Argument -> IO Float
-argumentReadVFloat s = withManagedPtr s $ \ptr -> do
+argumentWriteVUint64 :: MonadIO m => Argument -> Word64 -> m ()
+argumentWriteVUint64 s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word64)
+
+data ArgumentVUint64FieldInfo
+instance AttrInfo ArgumentVUint64FieldInfo where
+    type AttrAllowedOps ArgumentVUint64FieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVUint64FieldInfo = (~) Word64
+    type AttrBaseTypeConstraint ArgumentVUint64FieldInfo = (~) Argument
+    type AttrGetType ArgumentVUint64FieldInfo = Word64
+    type AttrLabel ArgumentVUint64FieldInfo = "v_uint64"
+    attrGet _ = argumentReadVUint64
+    attrSet _ = argumentWriteVUint64
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVUint64 :: AttrLabelProxy "vUint64"
+argumentVUint64 = AttrLabelProxy
+
+
+argumentReadVFloat :: MonadIO m => Argument -> m Float
+argumentReadVFloat s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CFloat
     let val' = realToFrac val
     return val'
 
-argumentReadVDouble :: Argument -> IO Double
-argumentReadVDouble s = withManagedPtr s $ \ptr -> do
+argumentWriteVFloat :: MonadIO m => Argument -> Float -> m ()
+argumentWriteVFloat s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 0) (val' :: CFloat)
+
+data ArgumentVFloatFieldInfo
+instance AttrInfo ArgumentVFloatFieldInfo where
+    type AttrAllowedOps ArgumentVFloatFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVFloatFieldInfo = (~) Float
+    type AttrBaseTypeConstraint ArgumentVFloatFieldInfo = (~) Argument
+    type AttrGetType ArgumentVFloatFieldInfo = Float
+    type AttrLabel ArgumentVFloatFieldInfo = "v_float"
+    attrGet _ = argumentReadVFloat
+    attrSet _ = argumentWriteVFloat
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVFloat :: AttrLabelProxy "vFloat"
+argumentVFloat = AttrLabelProxy
+
+
+argumentReadVDouble :: MonadIO m => Argument -> m Double
+argumentReadVDouble s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO CDouble
     let val' = realToFrac val
     return val'
 
-argumentReadVShort :: Argument -> IO Int16
-argumentReadVShort s = withManagedPtr s $ \ptr -> do
+argumentWriteVDouble :: MonadIO m => Argument -> Double -> m ()
+argumentWriteVDouble s val = liftIO $ withManagedPtr s $ \ptr -> do
+    let val' = realToFrac val
+    poke (ptr `plusPtr` 0) (val' :: CDouble)
+
+data ArgumentVDoubleFieldInfo
+instance AttrInfo ArgumentVDoubleFieldInfo where
+    type AttrAllowedOps ArgumentVDoubleFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVDoubleFieldInfo = (~) Double
+    type AttrBaseTypeConstraint ArgumentVDoubleFieldInfo = (~) Argument
+    type AttrGetType ArgumentVDoubleFieldInfo = Double
+    type AttrLabel ArgumentVDoubleFieldInfo = "v_double"
+    attrGet _ = argumentReadVDouble
+    attrSet _ = argumentWriteVDouble
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVDouble :: AttrLabelProxy "vDouble"
+argumentVDouble = AttrLabelProxy
+
+
+argumentReadVShort :: MonadIO m => Argument -> m Int16
+argumentReadVShort s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int16
     return val
 
-argumentReadVUshort :: Argument -> IO Word16
-argumentReadVUshort s = withManagedPtr s $ \ptr -> do
+argumentWriteVShort :: MonadIO m => Argument -> Int16 -> m ()
+argumentWriteVShort s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int16)
+
+data ArgumentVShortFieldInfo
+instance AttrInfo ArgumentVShortFieldInfo where
+    type AttrAllowedOps ArgumentVShortFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVShortFieldInfo = (~) Int16
+    type AttrBaseTypeConstraint ArgumentVShortFieldInfo = (~) Argument
+    type AttrGetType ArgumentVShortFieldInfo = Int16
+    type AttrLabel ArgumentVShortFieldInfo = "v_short"
+    attrGet _ = argumentReadVShort
+    attrSet _ = argumentWriteVShort
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVShort :: AttrLabelProxy "vShort"
+argumentVShort = AttrLabelProxy
+
+
+argumentReadVUshort :: MonadIO m => Argument -> m Word16
+argumentReadVUshort s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word16
     return val
 
-argumentReadVInt :: Argument -> IO Int32
-argumentReadVInt s = withManagedPtr s $ \ptr -> do
+argumentWriteVUshort :: MonadIO m => Argument -> Word16 -> m ()
+argumentWriteVUshort s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word16)
+
+data ArgumentVUshortFieldInfo
+instance AttrInfo ArgumentVUshortFieldInfo where
+    type AttrAllowedOps ArgumentVUshortFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVUshortFieldInfo = (~) Word16
+    type AttrBaseTypeConstraint ArgumentVUshortFieldInfo = (~) Argument
+    type AttrGetType ArgumentVUshortFieldInfo = Word16
+    type AttrLabel ArgumentVUshortFieldInfo = "v_ushort"
+    attrGet _ = argumentReadVUshort
+    attrSet _ = argumentWriteVUshort
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVUshort :: AttrLabelProxy "vUshort"
+argumentVUshort = AttrLabelProxy
+
+
+argumentReadVInt :: MonadIO m => Argument -> m Int32
+argumentReadVInt s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int32
     return val
 
-argumentReadVUint :: Argument -> IO Word32
-argumentReadVUint s = withManagedPtr s $ \ptr -> do
+argumentWriteVInt :: MonadIO m => Argument -> Int32 -> m ()
+argumentWriteVInt s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int32)
+
+data ArgumentVIntFieldInfo
+instance AttrInfo ArgumentVIntFieldInfo where
+    type AttrAllowedOps ArgumentVIntFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVIntFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint ArgumentVIntFieldInfo = (~) Argument
+    type AttrGetType ArgumentVIntFieldInfo = Int32
+    type AttrLabel ArgumentVIntFieldInfo = "v_int"
+    attrGet _ = argumentReadVInt
+    attrSet _ = argumentWriteVInt
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVInt :: AttrLabelProxy "vInt"
+argumentVInt = AttrLabelProxy
+
+
+argumentReadVUint :: MonadIO m => Argument -> m Word32
+argumentReadVUint s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word32
     return val
 
-argumentReadVLong :: Argument -> IO Int64
-argumentReadVLong s = withManagedPtr s $ \ptr -> do
-    val <- peek (ptr `plusPtr` 0) :: IO Int64
+argumentWriteVUint :: MonadIO m => Argument -> Word32 -> m ()
+argumentWriteVUint s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word32)
+
+data ArgumentVUintFieldInfo
+instance AttrInfo ArgumentVUintFieldInfo where
+    type AttrAllowedOps ArgumentVUintFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVUintFieldInfo = (~) Word32
+    type AttrBaseTypeConstraint ArgumentVUintFieldInfo = (~) Argument
+    type AttrGetType ArgumentVUintFieldInfo = Word32
+    type AttrLabel ArgumentVUintFieldInfo = "v_uint"
+    attrGet _ = argumentReadVUint
+    attrSet _ = argumentWriteVUint
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVUint :: AttrLabelProxy "vUint"
+argumentVUint = AttrLabelProxy
+
+
+argumentReadVLong :: MonadIO m => Argument -> m CLong
+argumentReadVLong s = liftIO $ withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO CLong
     return val
 
-argumentReadVUlong :: Argument -> IO Word64
-argumentReadVUlong s = withManagedPtr s $ \ptr -> do
-    val <- peek (ptr `plusPtr` 0) :: IO Word64
+argumentWriteVLong :: MonadIO m => Argument -> CLong -> m ()
+argumentWriteVLong s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: CLong)
+
+data ArgumentVLongFieldInfo
+instance AttrInfo ArgumentVLongFieldInfo where
+    type AttrAllowedOps ArgumentVLongFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVLongFieldInfo = (~) CLong
+    type AttrBaseTypeConstraint ArgumentVLongFieldInfo = (~) Argument
+    type AttrGetType ArgumentVLongFieldInfo = CLong
+    type AttrLabel ArgumentVLongFieldInfo = "v_long"
+    attrGet _ = argumentReadVLong
+    attrSet _ = argumentWriteVLong
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVLong :: AttrLabelProxy "vLong"
+argumentVLong = AttrLabelProxy
+
+
+argumentReadVUlong :: MonadIO m => Argument -> m CULong
+argumentReadVUlong s = liftIO $ withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO CULong
     return val
 
-argumentReadVSsize :: Argument -> IO Int64
-argumentReadVSsize s = withManagedPtr s $ \ptr -> do
+argumentWriteVUlong :: MonadIO m => Argument -> CULong -> m ()
+argumentWriteVUlong s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: CULong)
+
+data ArgumentVUlongFieldInfo
+instance AttrInfo ArgumentVUlongFieldInfo where
+    type AttrAllowedOps ArgumentVUlongFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVUlongFieldInfo = (~) CULong
+    type AttrBaseTypeConstraint ArgumentVUlongFieldInfo = (~) Argument
+    type AttrGetType ArgumentVUlongFieldInfo = CULong
+    type AttrLabel ArgumentVUlongFieldInfo = "v_ulong"
+    attrGet _ = argumentReadVUlong
+    attrSet _ = argumentWriteVUlong
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVUlong :: AttrLabelProxy "vUlong"
+argumentVUlong = AttrLabelProxy
+
+
+argumentReadVSsize :: MonadIO m => Argument -> m Int64
+argumentReadVSsize s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int64
     return val
 
-argumentReadVSize :: Argument -> IO Word64
-argumentReadVSize s = withManagedPtr s $ \ptr -> do
+argumentWriteVSsize :: MonadIO m => Argument -> Int64 -> m ()
+argumentWriteVSsize s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int64)
+
+data ArgumentVSsizeFieldInfo
+instance AttrInfo ArgumentVSsizeFieldInfo where
+    type AttrAllowedOps ArgumentVSsizeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVSsizeFieldInfo = (~) Int64
+    type AttrBaseTypeConstraint ArgumentVSsizeFieldInfo = (~) Argument
+    type AttrGetType ArgumentVSsizeFieldInfo = Int64
+    type AttrLabel ArgumentVSsizeFieldInfo = "v_ssize"
+    attrGet _ = argumentReadVSsize
+    attrSet _ = argumentWriteVSsize
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVSsize :: AttrLabelProxy "vSsize"
+argumentVSsize = AttrLabelProxy
+
+
+argumentReadVSize :: MonadIO m => Argument -> m Word64
+argumentReadVSize s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Word64
     return val
 
-argumentReadVString :: Argument -> IO T.Text
-argumentReadVString s = withManagedPtr s $ \ptr -> do
+argumentWriteVSize :: MonadIO m => Argument -> Word64 -> m ()
+argumentWriteVSize s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Word64)
+
+data ArgumentVSizeFieldInfo
+instance AttrInfo ArgumentVSizeFieldInfo where
+    type AttrAllowedOps ArgumentVSizeFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint ArgumentVSizeFieldInfo = (~) Word64
+    type AttrBaseTypeConstraint ArgumentVSizeFieldInfo = (~) Argument
+    type AttrGetType ArgumentVSizeFieldInfo = Word64
+    type AttrLabel ArgumentVSizeFieldInfo = "v_size"
+    attrGet _ = argumentReadVSize
+    attrSet _ = argumentWriteVSize
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+argumentVSize :: AttrLabelProxy "vSize"
+argumentVSize = AttrLabelProxy
+
+
+argumentReadVString :: MonadIO m => Argument -> m (Maybe T.Text)
+argumentReadVString 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
 
-argumentReadVPointer :: Argument -> IO (Ptr ())
-argumentReadVPointer s = withManagedPtr s $ \ptr -> do
+argumentWriteVString :: MonadIO m => Argument -> CString -> m ()
+argumentWriteVString s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: CString)
+
+argumentClearVString :: MonadIO m => Argument -> m ()
+argumentClearVString s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: CString)
+
+data ArgumentVStringFieldInfo
+instance AttrInfo ArgumentVStringFieldInfo where
+    type AttrAllowedOps ArgumentVStringFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint ArgumentVStringFieldInfo = (~) CString
+    type AttrBaseTypeConstraint ArgumentVStringFieldInfo = (~) Argument
+    type AttrGetType ArgumentVStringFieldInfo = Maybe T.Text
+    type AttrLabel ArgumentVStringFieldInfo = "v_string"
+    attrGet _ = argumentReadVString
+    attrSet _ = argumentWriteVString
+    attrConstruct = undefined
+    attrClear _ = argumentClearVString
+
+argumentVString :: AttrLabelProxy "vString"
+argumentVString = AttrLabelProxy
+
+
+argumentReadVPointer :: MonadIO m => Argument -> m (Ptr ())
+argumentReadVPointer s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr ())
     return val
+
+argumentWriteVPointer :: MonadIO m => Argument -> Ptr () -> m ()
+argumentWriteVPointer s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Ptr ())
+
+argumentClearVPointer :: MonadIO m => Argument -> m ()
+argumentClearVPointer s = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (nullPtr :: Ptr ())
+
+data ArgumentVPointerFieldInfo
+instance AttrInfo ArgumentVPointerFieldInfo where
+    type AttrAllowedOps ArgumentVPointerFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
+    type AttrSetTypeConstraint ArgumentVPointerFieldInfo = (~) (Ptr ())
+    type AttrBaseTypeConstraint ArgumentVPointerFieldInfo = (~) Argument
+    type AttrGetType ArgumentVPointerFieldInfo = Ptr ()
+    type AttrLabel ArgumentVPointerFieldInfo = "v_pointer"
+    attrGet _ = argumentReadVPointer
+    attrSet _ = argumentWriteVPointer
+    attrConstruct = undefined
+    attrClear _ = argumentClearVPointer
+
+argumentVPointer :: AttrLabelProxy "vPointer"
+argumentVPointer = AttrLabelProxy
+
+
+
+type instance AttributeList Argument = ArgumentAttributeList
+type ArgumentAttributeList = ('[ '("vBoolean", ArgumentVBooleanFieldInfo), '("vInt8", ArgumentVInt8FieldInfo), '("vUint8", ArgumentVUint8FieldInfo), '("vInt16", ArgumentVInt16FieldInfo), '("vUint16", ArgumentVUint16FieldInfo), '("vInt32", ArgumentVInt32FieldInfo), '("vUint32", ArgumentVUint32FieldInfo), '("vInt64", ArgumentVInt64FieldInfo), '("vUint64", ArgumentVUint64FieldInfo), '("vFloat", ArgumentVFloatFieldInfo), '("vDouble", ArgumentVDoubleFieldInfo), '("vShort", ArgumentVShortFieldInfo), '("vUshort", ArgumentVUshortFieldInfo), '("vInt", ArgumentVIntFieldInfo), '("vUint", ArgumentVUintFieldInfo), '("vLong", ArgumentVLongFieldInfo), '("vUlong", ArgumentVUlongFieldInfo), '("vSsize", ArgumentVSsizeFieldInfo), '("vSize", ArgumentVSizeFieldInfo), '("vString", ArgumentVStringFieldInfo), '("vPointer", ArgumentVPointerFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveArgumentMethod (t :: Symbol) (o :: *) :: * where
     ResolveArgumentMethod l o = MethodResolutionFailed l o
diff --git a/GI/GIRepository/Unions/Argument.hs-boot b/GI/GIRepository/Unions/Argument.hs-boot
--- a/GI/GIRepository/Unions/Argument.hs-boot
+++ b/GI/GIRepository/Unions/Argument.hs-boot
@@ -1,8 +1,8 @@
 module GI.GIRepository.Unions.Argument 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-girepository.cabal b/gi-girepository.cabal
--- a/gi-girepository.cabal
+++ b/gi-girepository.cabal
@@ -1,6 +1,6 @@
 -- Autogenerated, do not edit.
 name:               gi-girepository
-version:            0.1.46.13
+version:            0.1.46.14
 synopsis:           GIRepository bindings
 description:        Bindings for GIRepository, 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.GIRepository.Types
@@ -34,8 +34,8 @@
                         GI.GIRepository.Unions.Argument
     pkgconfig-depends:  gobject-introspection-1.0 >= 1.46
     build-depends: base >= 4.7 && <5,
-        haskell-gi-base >= 0.13 && < 1,
-        gi-gobject >= 0.2.46.13 && < 0.2.47,
+        haskell-gi-base >= 0.14 && < 1,
+        gi-gobject >= 0.2.46.14 && < 0.2.47,
         bytestring >= 0.10,
         containers >= 0.5,
         text >= 1.0,
