[1] There is a possibility that a AOT error occurs by serialization of generic type where new() isn't written. It can be avoided by writing new() specifically.
available types:
-user defined class/struct
-C# primitive types
--int, long, sbyte, short
--uint, ulong, byte, ushort
--Decimal
--char
--bool
--float, double
--string ( available json escape characters )
--enum type
--- Serialize available to a string or int. Can be selected.
--- Deserialize available to both of string and int.
-array
--multidimensional array (any dimensions)
--jagged array (any dimensions)
-generic types
--user defined generic class/struct
--Dictionary
--SortedDictionary
--List
--HashSet
-unity types
--Vector2
--Vector3
--Vector4
--Quaternion
--Hash128
--Rect
--Color
--Color32
-.NET types
--DateTime