public static void Write <T1, T2>(this Tuple <T1, T2>[] _this, AssetWriter writer, Func <T1, int> converter)
     where T2 : IAssetWritable
 {
     writer.Write(_this.Length);
     for (int i = 0; i < _this.Length; i++)
     {
         writer.Write(_this[i], converter);
     }
 }
 public static void Write <T>(this Tuple <string, T>[] _this, AssetWriter writer)
     where T : IAssetWritable
 {
     writer.Write(_this.Length);
     for (int i = 0; i < _this.Length; i++)
     {
         writer.Write(_this[i]);
     }
 }
 public static void Write <T>(this IReadOnlyDictionary <string, T> _this, AssetWriter writer)
     where T : IAssetWritable
 {
     writer.Write(_this.Count);
     foreach (var kvp in _this)
     {
         writer.Write(kvp.Key);
         kvp.Value.Write(writer);
     }
 }
 public static void Write <T1, T2>(this IReadOnlyDictionary <T1, T2> _this, AssetWriter writer)
     where T1 : IAssetWritable
     where T2 : IAssetWritable
 {
     writer.Write(_this.Count);
     foreach (var kvp in _this)
     {
         kvp.Key.Write(writer);
         kvp.Value.Write(writer);
     }
 }
 public static void Write(this AssetWriter _this, Tuple <int, long> value)
 {
     EndianWriterExtensions.Write(_this, value);
 }
 public static void Write <T1, T2>(this AssetWriter _this, Tuple <T1, T2> value, Func <T1, int> converter)
     where T2 : IAssetWritable
 {
     _this.Write(converter(value.Item1));
     value.Item2.Write(_this);
 }
 public static void Write <T>(this AssetWriter _this, Tuple <string, T> value)
     where T : IAssetWritable
 {
     _this.Write(value.Item1);
     value.Item2.Write(_this);
 }
 public static void Write <T>(this AssetWriter _this, Tuple <T, long> value, Func <T, int> converter)
 {
     EndianWriterExtensions.Write(_this, value, converter);
 }
 public static void Write(this IReadOnlyDictionary <int, int> _this, AssetWriter writer)
 {
     IDictionaryWriteEndianExtensions.Write(_this, writer);
 }
 public static void Write <T>(this IReadOnlyDictionary <Tuple <T, long>, string> _this, AssetWriter writer, Func <T, int> converter)
 {
     IDictionaryWriteEndianExtensions.Write(_this, writer, converter);
 }
 public static void Write(this IReadOnlyDictionary <Tuple <int, long>, string> _this, AssetWriter writer)
 {
     IDictionaryWriteEndianExtensions.Write(_this, writer);
 }
 public static void Write <T>(this T[][] _this, AssetWriter writer)
     where T : IAssetWritable
 {
     writer.WriteAssetArray(_this);
 }
 public static void Write(this string[] _this, AssetWriter writer)
 {
     ArrayWriteEndianExtensions.Write(_this, writer);
 }