func _SetBaseInfoFinalizer(bi *BaseInfo) *BaseInfo {
	runtime.SetFinalizer(bi, _BaseInfoFinalizer)
	return bi
}
Helper for initializing finalizer on BaseInfo
package gi
import "C"
import (
	"errors"
	"strings"
	"runtime"
	"unsafe"
	"fmt"
)
func init() {
	C.g_type_init()
}
func _GStringGSListToGoStringSlice(list *C.GSList) []string {
	var slice []string
	for list != nil {
		str := C.GoString(C.gpointer_to_charp(list.data))
		slice = append(slice, str)
		list = list.next
	}
	return slice
}
func _GStringArrayToGoStringSlice(arr **C.gchar) []string {
	var slice []string
	if arr == nil {
		return slice
	}
	iter := arr
	for *iter != nil {
		slice = append(slice, _GStringToGoString(*iter))
		iter = C.next_gcharptr(iter)
	}
	C.g_strfreev(arr)
	return slice
}
func _GoStringToGString(s string) *C.gchar {
	if s == "" {
		return nil
	}
	return (*C.gchar)(unsafe.Pointer(C.CString(s)))
}
func _GStringToGoString(s *C.gchar) string {
	if s == nil {
		return ""
	}
	return C.GoString((*C.char)(unsafe.Pointer(s)))
}
func _CStringToGoString(s *C.char) string {
	if s == nil {
		return ""
	}
	return C.GoString(s)
}
func _GErrorToOSError(err *C.GError) (goerr error) {
	goerr = errors.New(_GStringToGoString(err.message))
	C.g_error_free(err)
	return
}
func _ExpectBaseInfoType(bil BaseInfoLike, types ...InfoType) {
	bi := bil.inheritedFromBaseInfo()
	for _, t := range types {
		if bi.Type() == t {
			return
		}
	}
	typeStrings := make([]string, len(types))
	for i, t := range types {
		typeStrings[i] = t.String()
	}
	panic(fmt.Sprintf("Type mismatch, expected: %s, got: %s",
		strings.Join(typeStrings, " or "), bi.Type()))
}
func _BaseInfoFinalizer(bi *BaseInfo) {
	bi.Unref()
}