+The attributes are really optional though you should at least set some
+of them.
+All property types have a 'nick' and a 'blurb' attribute and you should
+set those accordingly. This will make runtime querying the object
+nicer as things such as gui editors and class browsers can be more
+verbose about the class itself. Almost all types also have a
+'default_value'
+attribute which sets the initial value of this property (on object
+initialization, the set handler will be run automatically with this
+value).
+.PP
+All the numeric types (including CHAR) have 'minimum' and 'maximum'
+attributes which can restrict the range. If you do not specify these
+the range will be the full range that the data type can handle.
+.PP
+Types such as UNICHAR and BOOLEAN only have the 'nick', 'blurb' and
+'default_value' attributes.
+.PP
+The ENUM type has an 'enum_type' attribute which is the exact
+type of the enum. This is so that the property knows which exact
+type you can set, rather then just knowing it is an enum. You should
+always create an enum type specific for the enum itself (see section
+on the enum types)
+.PP
+Similarly FLAGS type has a 'flags_type' which again you should set to
+the specific type of this flags data member.
+.PP
+There is a STRING type which has only the extra 'default_value' attribute.
+.PP
+The OBJECT type is one of the types that doesn't have a 'default_value' and it
+only has an 'object_type' attribute (in addition to nick and blurb of course)
+that is the exact object type that this property accepts.
+.PP
+There is a BOXED type which is a pointer which has a boxed type defined
+(such that GObject knows how to copy and destroy this pointer). Here
+you will need to specify the 'boxed_type' attribute with the specific
+type of the boxed pointer.
+.PP
+There is also a POINTER type, which has only the nick and blurb
+attributes. This is for storing arbitrary pointers. You should be
+careful with this one, as GObject knows nothing about the data
+stored at this pointer. It is somewhat like a 'void *' type.
+.PP
+There is also the PARAM type for storing parameters with a 'param_type'
+attribute.
+.PP
+You should notice that this list is pretty much like the list of g_param_spec_*
+functions from gobject/gparamspecs.h, and the attributes are like the
+arguments of those functions. Note however that value array is NOT supported
+yet.
+.PP
+You can also specify extra flags, such as CONSTRUCT or CONSTRUCT_ONLY using the
+'flags' attribute. You can specify multiple flags by oring them together with
+'|'. These flags correspond to the GParamFlags enumeration except do not
+include the G_PARAM_ prefix. So for example to define an enumeration property,
+which is a CONSTRUCT_ONLY property, we could do the following: