public bool Equals(HodgepodgeDto o) => o != null &&
 True == o.True &&
 False == o.False &&
 Int8 == o.Int8 &&
 Int16 == o.Int16 &&
 Int32 == o.Int32 &&
 Equals(String, o.String) &&
 Guid.Equals(o.Guid) &&
 IntList.SequenceEqual(o.IntList) &&
 StringArray.SequenceEqual(o.StringArray) &&
 IntPowersArray.SequenceEqual(o.IntPowersArray) &&
 IntStringMap.Count == o.IntStringMap.Count &&
 IntStringMap.All(kvp => o.IntStringMap[kvp.Key] == kvp.Value) &&
 IntStringStringArrayMapArrayMap.Count == o.IntStringStringArrayMapArrayMap.Count &&
 IntStringStringArrayMapArrayMap.All(kvp => {
     var aDicts = kvp.Value;
     var bDicts = o.IntStringStringArrayMapArrayMap[kvp.Key];
     return(aDicts.Length == bDicts.Length &&
            aDicts.Zip(bDicts, Tuple.Create).All(
                (dicts) => {
         var aDict = dicts.Item1;
         var bDict = dicts.Item2;
         return aDict.Count == bDict.Count &&
         aDict.All(innerKvp => bDict[innerKvp.Key].SequenceEqual(innerKvp.Value));
     }));
 }) &&
 Type == o.Type &&
 DateTime == o.DateTime &&
 // ReSharper disable once CompareOfFloatsByEqualityOperator
 Float == o.Float &&
 // ReSharper disable once CompareOfFloatsByEqualityOperator
 Double == o.Double;