in types/types.go [116:129]
func (t *Type) IsBasic() bool {
switch t.Kind {
case BasicKind:
return true
case SliceKind, PointerKind:
return t.UnderlyingType != nil && t.UnderlyingType.IsBasic()
case MapKind:
return t.KeyType != nil && t.KeyType.IsBasic() && t.ValueType != nil && t.ValueType.IsBasic()
case InterfaceKind:
return true
default:
return false
}
}