public static void Read(this IDictionary <string, long> _this, EndianStream stream)
        {
            int count = stream.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                string key   = stream.ReadStringAligned();
                long   value = stream.ReadInt64();
                _this.Add(key, value);
            }
        }
        public static void Read(this IDictionary <int, int> _this, EndianStream stream)
        {
            int count = stream.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                int key   = stream.ReadInt32();
                int value = stream.ReadInt32();
                _this.Add(key, value);
            }
        }
        public static void Read(this IDictionary <Tuple <char, char>, float> _this, EndianStream stream)
        {
            int count = stream.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                Tuple <char, char> key = stream.ReadTupleCharChar();
                float value            = stream.ReadSingle();
                _this.Add(key, value);
            }
        }
        public static T[] ReadEnum32Array <T>(this EndianStream stream, Func <int, T> converter)
        {
            int count = stream.ReadInt32();

            T[] array = new T[count];
            for (int i = 0; i < count; i++)
            {
                int value = stream.ReadInt32();
                array[i] = converter(value);
            }
            return(array);
        }
        public static Tuple <char, float>[] ReadTupleCharFloatArray(this EndianStream stream)
        {
            int count = stream.ReadInt32();

            Tuple <char, float>[] array = new Tuple <char, float> [count];
            for (int i = 0; i < count; i++)
            {
                Tuple <char, float> tuple = ReadTupleCharFloat(stream);
                array[i] = tuple;
            }
            return(array);
        }
        public static KeyValuePair <int, uint>[] ReadInt32KVPUInt32Array(this EndianStream stream)
        {
            int count = stream.ReadInt32();

            KeyValuePair <int, uint>[] array = new KeyValuePair <int, uint> [count];
            for (int i = 0; i < count; i++)
            {
                int  key   = stream.ReadInt32();
                uint value = stream.ReadUInt32();
                KeyValuePair <int, uint> kvp = new KeyValuePair <int, uint>(key, value);
                array[i] = kvp;
            }
            return(array);
        }
 public AssetStream(EndianStream stream, Version version, Platform platform) :
     base(stream.BaseStream, stream.AlignPosition, stream.EndianType)
 {
     Version  = version;
     Platform = platform;
 }