/// <inheritdoc/>
 public override void Serialize(ref Xenko.Core.Collections.SortedList <TKey, TValue> obj, ArchiveMode mode, SerializationStream stream)
 {
     if (mode == ArchiveMode.Deserialize)
     {
         // Should be null if it was
         var count = stream.ReadInt32();
         for (var i = 0; i < count; ++i)
         {
             var key   = default(TKey);
             var value = default(TValue);
             keySerializer.Serialize(ref key, mode, stream);
             valueSerializer.Serialize(ref value, mode, stream);
             obj.Add(key, value);
         }
     }
     else if (mode == ArchiveMode.Serialize)
     {
         stream.Write(obj.Count);
         foreach (var item in obj)
         {
             keySerializer.Serialize(item.Key, stream);
             valueSerializer.Serialize(item.Value, stream);
         }
     }
 }
 /// <inheritdoc/>
 public override void PreSerialize(ref Xenko.Core.Collections.SortedList <TKey, TValue> obj, ArchiveMode mode, SerializationStream stream)
 {
     if (mode == ArchiveMode.Deserialize)
     {
         // TODO: Peek the SortedList size
         if (obj == null)
         {
             obj = new Xenko.Core.Collections.SortedList <TKey, TValue>();
         }
         else
         {
             obj.Clear();
         }
     }
 }