code: func (v *Object) goValue() (interface{}, error) {
  	objType := Type(C._g_type_from_instance(C.gpointer(v.native())))
  	f, err := gValueMarshalers.lookupType(objType)
  	if err != nil {
  		return nil, err
  	}
  
  	// The marshalers expect Values, not Objects
  	val, err := ValueInit(objType)
  	if err != nil {
  		return nil, err
  	}
  	val.SetInstance(uintptr(unsafe.Pointer(v.GObject)))
  	rv, err := f(uintptr(unsafe.Pointer(val.native())))
  	return rv, err
  }
docs: // goValue converts a *Object to a Go type (e.g. *Object => *gtk.Entry).
  // It is used in goMarshal to convert generic GObject parameters to
  // signal handlers to the actual types expected by the signal handler.