func (ti *typeInfo) InUniverse() bool {
	return ti.Properties&propertyUniverse != 0
}
InUniverse reports whether it is declared in the universe scope.
package compiler
import (
	"reflect"
	"github.com/open2b/scriggo/internal/runtime"
)
type properties uint16
const (
	propertyUntyped                        properties = 1 << iota  
	propertyIsType                                                 
	propertyIsFormatType                                           
	propertyIsPackage                                              
	propertyUniverse                                               
	propertyGlobal                                                 
	propertyAddressable                                            
	propertyIsNative                                               
	propertyHasValue                                               
	propertyIsMacroDeclaration                                     
	propertyMacroDeclaredInFileWithExtends                         
)
type typeInfo struct {
	Type              reflect.Type  
	Alias             string        
	Properties        properties    
	Constant          constant      
	NativePackageName string        
	MethodType        methodType    
	value             interface{}   
	valueType         reflect.Type  
}
type methodType uint8
const (
	noMethod             methodType = iota  
	methodValueConcrete                     
	methodValueInterface                    
	methodCallConcrete                      
	methodCallInterface                     
)
func (ti *typeInfo) Nil() bool {
	return ti.InUniverse() && ti.Untyped() && !ti.Addressable() && ti.Type == nil
}
func (ti *typeInfo) Untyped() bool {
	return ti.Properties&propertyUntyped != 0
}
func (ti *typeInfo) IsConstant() bool {
	return ti.Constant != nil
}
func (ti *typeInfo) IsMacroDeclaration() bool {
	return ti.Properties&propertyIsMacroDeclaration != 0
}
func (ti *typeInfo) IsUntypedConstant() bool {
	return ti.Properties&propertyUntyped != 0 && ti.Constant != nil
}
func (ti *typeInfo) IsType() bool {
	return ti.Properties&propertyIsType != 0
}
func (ti *typeInfo) IsFormatType() bool {
	return ti.Properties&propertyIsFormatType != 0
}
func (ti *typeInfo) IsPackage() bool {
	return ti.Properties&propertyIsPackage != 0
}