An extensible deep comparison for .NET