Helper class to avoid paying the cost of runtime type lookups.
This is also used to abstract underlying type info in the runtime (e.g. RuntimeTypeHandle vs StaticTypeReg)
| CanBeNull | Gets a value indicating whether T can be null. i.e. The type is an object or nullable. |
| IsAbstract | Gets a value indicating whether T is an abstract type. |
| IsAbstractOrInterface | Gets a value indicating whether T is an abstract or interface type. |
| IsArray | Gets a value indicating whether T is an array type. |
| IsContainer | Gets a value indicating whether T is a property container type. |
| IsEnum | Gets a value indicating whether T is an enum type. |
| IsEnumFlags | Gets a value indicating whether T is an flags enum type. |
| IsInterface | Gets a value indicating whether T is an interface type. |
| IsLazyLoadReference | Gets a value indicating whether T is a UnityEngine.LazyLoadReference_1 type. |
| IsMultidimensionalArray | Gets a value indicating whether T is a multidimensional array type. |
| IsNullable | Gets a value indicating whether T is a nullable type. |
| IsObject | Gets a value indicating whether T is Object type. |
| IsPrimitive | Gets a value indicating whether T is a primitive type. |
| IsPrimitiveOrString | Gets a value indicating whether T is a primitive or [[string ]] type. |
| IsString | Gets a value indicating whether T is [[string ]] type. |
| IsUnityObject | Gets a value indicating whether T is a UnityEngine.Object type. |
| IsValueType | Gets a value indicating whether T is a value type. |