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;