package reflect2

import (
	
	
)

type safeType struct {
	reflect.Type
	cfg *frozenConfig
}

func ( *safeType) () interface{} {
	return reflect.New(.Type).Interface()
}

func ( *safeType) () unsafe.Pointer {
	panic("does not support unsafe operation")
}

func ( *safeType) () Type {
	return .cfg.Type2(.Type.Elem())
}

func ( *safeType) () reflect.Type {
	return .Type
}

func ( *safeType) ( unsafe.Pointer) interface{} {
	panic("does not support unsafe operation")
}

func ( *safeType) ( Type) bool {
	return .Type.Implements(.Type1())
}

func ( *safeType) () uintptr {
	panic("does not support unsafe operation")
}

func ( *safeType) ( interface{}) interface{} {
	return reflect.Indirect(reflect.ValueOf()).Interface()
}

func ( *safeType) ( unsafe.Pointer) interface{} {
	panic("does not support unsafe operation")
}

func ( *safeType) () bool {
	panic("does not support unsafe operation")
}

func ( *safeType) () bool {
	return IsNullable(.Kind())
}

func ( *safeType) ( interface{}) bool {
	if  == nil {
		return true
	}
	return reflect.ValueOf().Elem().IsNil()
}

func ( *safeType) ( unsafe.Pointer) bool {
	panic("does not support unsafe operation")
}

func ( *safeType) ( interface{},  interface{}) {
	reflect.ValueOf().Elem().Set(reflect.ValueOf().Elem())
}

func ( *safeType) ( unsafe.Pointer,  unsafe.Pointer) {
	panic("does not support unsafe operation")
}

func ( *safeType) ( Type) bool {
	return .Type1().AssignableTo(.Type1())
}