/**
 * Autogenerated by Thrift Compiler (0.14.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Thrift;
using Thrift.Collections;
using System.ServiceModel;
using System.Runtime.Serialization;


#pragma warning disable IDE0079  // remove unnecessary pragmas
#pragma warning disable IDE1006  // parts of the code use IDL spelling

namespace Apache.Cassandra.Test
{
  public static class CassandraTestExtensions
  {
    public static bool Equals(this Dictionary<byte[], Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>>> instance, object that)
    {
      if (!(that is Dictionary<byte[], Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>>> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this Dictionary<byte[], Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>>> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static Dictionary<byte[], Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>>> DeepCopy(this Dictionary<byte[], Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>>> source)
    {
      if (source == null)
        return null;

      var tmp354 = new Dictionary<byte[], Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>>>(source.Count);
      foreach (var pair in source)
        tmp354.Add((pair.Key != null) ? pair.Key.ToArray() : null, (pair.Value != null) ? pair.Value.DeepCopy() : null);
      return tmp354;
    }


    public static bool Equals(this Dictionary<byte[], List<global::Apache.Cassandra.Test.ColumnOrSuperColumn>> instance, object that)
    {
      if (!(that is Dictionary<byte[], List<global::Apache.Cassandra.Test.ColumnOrSuperColumn>> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this Dictionary<byte[], List<global::Apache.Cassandra.Test.ColumnOrSuperColumn>> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static Dictionary<byte[], List<global::Apache.Cassandra.Test.ColumnOrSuperColumn>> DeepCopy(this Dictionary<byte[], List<global::Apache.Cassandra.Test.ColumnOrSuperColumn>> source)
    {
      if (source == null)
        return null;

      var tmp355 = new Dictionary<byte[], List<global::Apache.Cassandra.Test.ColumnOrSuperColumn>>(source.Count);
      foreach (var pair in source)
        tmp355.Add((pair.Key != null) ? pair.Key.ToArray() : null, (pair.Value != null) ? pair.Value.DeepCopy() : null);
      return tmp355;
    }


    public static bool Equals(this Dictionary<byte[], int> instance, object that)
    {
      if (!(that is Dictionary<byte[], int> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this Dictionary<byte[], int> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static Dictionary<byte[], int> DeepCopy(this Dictionary<byte[], int> source)
    {
      if (source == null)
        return null;

      var tmp356 = new Dictionary<byte[], int>(source.Count);
      foreach (var pair in source)
        tmp356.Add((pair.Key != null) ? pair.Key.ToArray() : null, pair.Value);
      return tmp356;
    }


    public static bool Equals(this Dictionary<byte[], string> instance, object that)
    {
      if (!(that is Dictionary<byte[], string> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this Dictionary<byte[], string> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static Dictionary<byte[], string> DeepCopy(this Dictionary<byte[], string> source)
    {
      if (source == null)
        return null;

      var tmp357 = new Dictionary<byte[], string>(source.Count);
      foreach (var pair in source)
        tmp357.Add((pair.Key != null) ? pair.Key.ToArray() : null, (pair.Value != null) ? pair.Value : null);
      return tmp357;
    }


    public static bool Equals(this Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>> instance, object that)
    {
      if (!(that is Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>> DeepCopy(this Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>> source)
    {
      if (source == null)
        return null;

      var tmp358 = new Dictionary<string, List<global::Apache.Cassandra.Test.Mutation>>(source.Count);
      foreach (var pair in source)
        tmp358.Add((pair.Key != null) ? pair.Key : null, (pair.Value != null) ? pair.Value.DeepCopy() : null);
      return tmp358;
    }


    public static bool Equals(this Dictionary<string, List<string>> instance, object that)
    {
      if (!(that is Dictionary<string, List<string>> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this Dictionary<string, List<string>> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static Dictionary<string, List<string>> DeepCopy(this Dictionary<string, List<string>> source)
    {
      if (source == null)
        return null;

      var tmp359 = new Dictionary<string, List<string>>(source.Count);
      foreach (var pair in source)
        tmp359.Add((pair.Key != null) ? pair.Key : null, (pair.Value != null) ? pair.Value.DeepCopy() : null);
      return tmp359;
    }


    public static bool Equals(this Dictionary<string, string> instance, object that)
    {
      if (!(that is Dictionary<string, string> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this Dictionary<string, string> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static Dictionary<string, string> DeepCopy(this Dictionary<string, string> source)
    {
      if (source == null)
        return null;

      var tmp360 = new Dictionary<string, string>(source.Count);
      foreach (var pair in source)
        tmp360.Add((pair.Key != null) ? pair.Key : null, (pair.Value != null) ? pair.Value : null);
      return tmp360;
    }


    public static bool Equals(this List<byte[]> instance, object that)
    {
      if (!(that is List<byte[]> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<byte[]> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<byte[]> DeepCopy(this List<byte[]> source)
    {
      if (source == null)
        return null;

      var tmp361 = new List<byte[]>(source.Count);
      foreach (var elem in source)
        tmp361.Add((elem != null) ? elem.ToArray() : null);
      return tmp361;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.CfDef> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.CfDef> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.CfDef> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.CfDef> DeepCopy(this List<global::Apache.Cassandra.Test.CfDef> source)
    {
      if (source == null)
        return null;

      var tmp362 = new List<global::Apache.Cassandra.Test.CfDef>(source.Count);
      foreach (var elem in source)
        tmp362.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp362;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.Column> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.Column> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.Column> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.Column> DeepCopy(this List<global::Apache.Cassandra.Test.Column> source)
    {
      if (source == null)
        return null;

      var tmp363 = new List<global::Apache.Cassandra.Test.Column>(source.Count);
      foreach (var elem in source)
        tmp363.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp363;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.ColumnDef> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.ColumnDef> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.ColumnDef> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.ColumnDef> DeepCopy(this List<global::Apache.Cassandra.Test.ColumnDef> source)
    {
      if (source == null)
        return null;

      var tmp364 = new List<global::Apache.Cassandra.Test.ColumnDef>(source.Count);
      foreach (var elem in source)
        tmp364.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp364;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.ColumnOrSuperColumn> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.ColumnOrSuperColumn> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.ColumnOrSuperColumn> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.ColumnOrSuperColumn> DeepCopy(this List<global::Apache.Cassandra.Test.ColumnOrSuperColumn> source)
    {
      if (source == null)
        return null;

      var tmp365 = new List<global::Apache.Cassandra.Test.ColumnOrSuperColumn>(source.Count);
      foreach (var elem in source)
        tmp365.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp365;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.CounterColumn> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.CounterColumn> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.CounterColumn> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.CounterColumn> DeepCopy(this List<global::Apache.Cassandra.Test.CounterColumn> source)
    {
      if (source == null)
        return null;

      var tmp366 = new List<global::Apache.Cassandra.Test.CounterColumn>(source.Count);
      foreach (var elem in source)
        tmp366.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp366;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.CqlRow> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.CqlRow> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.CqlRow> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.CqlRow> DeepCopy(this List<global::Apache.Cassandra.Test.CqlRow> source)
    {
      if (source == null)
        return null;

      var tmp367 = new List<global::Apache.Cassandra.Test.CqlRow>(source.Count);
      foreach (var elem in source)
        tmp367.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp367;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.EndpointDetails> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.EndpointDetails> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.EndpointDetails> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.EndpointDetails> DeepCopy(this List<global::Apache.Cassandra.Test.EndpointDetails> source)
    {
      if (source == null)
        return null;

      var tmp368 = new List<global::Apache.Cassandra.Test.EndpointDetails>(source.Count);
      foreach (var elem in source)
        tmp368.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp368;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.IndexExpression> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.IndexExpression> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.IndexExpression> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.IndexExpression> DeepCopy(this List<global::Apache.Cassandra.Test.IndexExpression> source)
    {
      if (source == null)
        return null;

      var tmp369 = new List<global::Apache.Cassandra.Test.IndexExpression>(source.Count);
      foreach (var elem in source)
        tmp369.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp369;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.KeySlice> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.KeySlice> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.KeySlice> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.KeySlice> DeepCopy(this List<global::Apache.Cassandra.Test.KeySlice> source)
    {
      if (source == null)
        return null;

      var tmp370 = new List<global::Apache.Cassandra.Test.KeySlice>(source.Count);
      foreach (var elem in source)
        tmp370.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp370;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.KsDef> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.KsDef> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.KsDef> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.KsDef> DeepCopy(this List<global::Apache.Cassandra.Test.KsDef> source)
    {
      if (source == null)
        return null;

      var tmp371 = new List<global::Apache.Cassandra.Test.KsDef>(source.Count);
      foreach (var elem in source)
        tmp371.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp371;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.Mutation> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.Mutation> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.Mutation> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.Mutation> DeepCopy(this List<global::Apache.Cassandra.Test.Mutation> source)
    {
      if (source == null)
        return null;

      var tmp372 = new List<global::Apache.Cassandra.Test.Mutation>(source.Count);
      foreach (var elem in source)
        tmp372.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp372;
    }


    public static bool Equals(this List<global::Apache.Cassandra.Test.TokenRange> instance, object that)
    {
      if (!(that is List<global::Apache.Cassandra.Test.TokenRange> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<global::Apache.Cassandra.Test.TokenRange> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<global::Apache.Cassandra.Test.TokenRange> DeepCopy(this List<global::Apache.Cassandra.Test.TokenRange> source)
    {
      if (source == null)
        return null;

      var tmp373 = new List<global::Apache.Cassandra.Test.TokenRange>(source.Count);
      foreach (var elem in source)
        tmp373.Add((elem != null) ? elem.DeepCopy() : null);
      return tmp373;
    }


    public static bool Equals(this List<string> instance, object that)
    {
      if (!(that is List<string> other)) return false;
      if (ReferenceEquals(instance, other)) return true;

      return TCollections.Equals(instance, other);
    }


    public static int GetHashCode(this List<string> instance)
    {
      return TCollections.GetHashCode(instance);
    }


    public static List<string> DeepCopy(this List<string> source)
    {
      if (source == null)
        return null;

      var tmp374 = new List<string>(source.Count);
      foreach (var elem in source)
        tmp374.Add((elem != null) ? elem : null);
      return tmp374;
    }


  }
}
