using System.Collections.Generic;
public static void Main()
var jsonInput = JsonConvert.SerializeObject(input);
Console.WriteLine(jsonInput);
var result = JsonConvert.DeserializeObject<HFoo_IEqualityComparer>(jsonInput);
var result2= JsonConvert.DeserializeObject<HFoo_IEquatable>(jsonInput);
public class HFoo_IEqualityComparer{
public string Name {get;set;}
public HashSet<Pet> Pets {get;set;} = new HashSet<Pet>(new CustomComparer());
public class HFoo_IEquatable{
public string Name {get;set;}
public HashSet<Pet> Pets {get;set;}
public string Name {get;set;}
public List<Pet> Pets {get;set;}
public class Pet: IEquatable<Pet>{
public string Name{get;set;}
public DateTime BirthDate{get;set;}
public bool Equals(Pet obj1 ){
Console.WriteLine("Called");
public class CustomComparer : IEqualityComparer<Pet>{
public int GetHashCode(Pet obj) {
public bool Equals(Pet obj1, Pet obj2) {