public override object Read(ES3Reader reader) { var instance = (IList)ES3Reflection.CreateInstance(ES3Reflection.MakeGenericType(typeof(List <>), elementType.type)); if (reader.StartReadCollection()) { return(null); } // Iterate through each character until we reach the end of the array. while (true) { if (!reader.StartReadCollectionItem()) { break; } instance.Add(reader.Read <object>(elementType)); if (reader.EndReadCollectionItem()) { break; } } reader.EndReadCollection(); ES3Reflection.GetMethods(instance.GetType(), "Reverse").FirstOrDefault(t => !t.IsStatic).Invoke(instance, new object[] {}); return(ES3Reflection.CreateInstance(type, instance)); }