package reflect2

import (
	
	
)

type iface struct {
	itab *itab
	data unsafe.Pointer
}

type itab struct {
	ignore unsafe.Pointer
	rtype  unsafe.Pointer
}

func ( unsafe.Pointer) interface{} {
	 := (*iface)()
	if .itab == nil {
		return nil
	}
	return packEFace(.itab.rtype, .data)
}

type UnsafeIFaceType struct {
	unsafeType
}

func newUnsafeIFaceType( *frozenConfig,  reflect.Type) *UnsafeIFaceType {
	return &UnsafeIFaceType{
		unsafeType: *newUnsafeType(, ),
	}
}

func ( *UnsafeIFaceType) ( interface{}) interface{} {
	 := unpackEFace()
	assertType("Type.Indirect argument 1", .ptrRType, .rtype)
	return .UnsafeIndirect(.data)
}

func ( *UnsafeIFaceType) ( unsafe.Pointer) interface{} {
	return IFaceToEFace()
}

func ( *UnsafeIFaceType) ( interface{}) bool {
	if  == nil {
		return true
	}
	 := unpackEFace()
	assertType("Type.IsNil argument 1", .ptrRType, .rtype)
	return .UnsafeIsNil(.data)
}

func ( *UnsafeIFaceType) ( unsafe.Pointer) bool {
	if  == nil {
		return true
	}
	 := (*iface)()
	if .itab == nil {
		return true
	}
	return false
}