code: func BindProperty(source *Object, sourceProperty string,
  	target *Object, targetProperty string,
  	flags BindingFlags) *Binding {
  	srcStr := (*C.gchar)(C.CString(sourceProperty))
  	defer C.free(unsafe.Pointer(srcStr))
  	tgtStr := (*C.gchar)(C.CString(targetProperty))
  	defer C.free(unsafe.Pointer(tgtStr))
  	obj := C.g_object_bind_property(
  		C.gpointer(source.GObject), srcStr,
  		C.gpointer(target.GObject), tgtStr,
  		C.GBindingFlags(flags),
  	)
  	if obj == nil {
  		return nil
  	}
  	return &Binding{wrapObject(unsafe.Pointer(obj))}
  }
docs: // Creates a binding between source property on source and target property on
  // target . Whenever the source property is changed the target_property is
  // updated using the same value.