| 
					
				 | 
			
			
				@@ -6,6 +6,7 @@ using System.Collections.Generic; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using System.Globalization; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using System.Reactive.Linq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using System.Threading; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System.Threading.Tasks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Avalonia.Data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Avalonia.Markup.Data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Avalonia.UnitTests; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -17,13 +18,15 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public class BindingExpressionTests : IClassFixture<InvariantCultureFixture> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public async void Should_Get_Simple_Property_Value() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task Should_Get_Simple_Property_Value() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { StringValue = "foo" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(string)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var result = await target.Take(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal("foo", result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -35,6 +38,8 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             target.OnNext("bar"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal("bar", data.StringValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -46,102 +51,87 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             target.OnNext("bar"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal("bar", data.Foo[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public async void Should_Convert_Get_String_To_Double() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task Should_Convert_Get_String_To_Double() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if NET461 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { StringValue = "5.6" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(double)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var result = await target.Take(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal(5.6, result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public async void Getting_Invalid_Double_String_Should_Return_BindingError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task Getting_Invalid_Double_String_Should_Return_BindingError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { StringValue = "foo" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(double)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var result = await target.Take(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.IsType<BindingNotification>(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public async void Should_Coerce_Get_Null_Double_String_To_UnsetValue() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task Should_Coerce_Get_Null_Double_String_To_UnsetValue() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { StringValue = null }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(double)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var result = await target.Take(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal(AvaloniaProperty.UnsetValue, result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void Should_Convert_Set_String_To_Double() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if NET461 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { StringValue = (5.6).ToString() }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(double)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             target.OnNext(6.7); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal((6.7).ToString(), data.StringValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public async void Should_Convert_Get_Double_To_String() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task Should_Convert_Get_Double_To_String() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if NET461 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { DoubleValue = 5.6 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression(new ExpressionObserver(data, "DoubleValue"), typeof(string)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var result = await target.Take(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal((5.6).ToString(), result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void Should_Convert_Set_Double_To_String() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if NET461 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { DoubleValue = 5.6 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression(new ExpressionObserver(data, "DoubleValue"), typeof(string)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             target.OnNext("6.7"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal(6.7, data.DoubleValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public async void Should_Return_BindingNotification_With_FallbackValue_For_NonConvertibe_Target_Value() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task Should_Return_BindingNotification_With_FallbackValue_For_NonConvertibe_Target_Value() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if NET461 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { StringValue = "foo" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new ExpressionObserver(data, "StringValue"), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -156,17 +146,13 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     BindingErrorType.Error, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     42), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public async void Should_Return_BindingNotification_With_FallbackValue_For_NonConvertibe_Target_Value_With_Data_Validation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task Should_Return_BindingNotification_With_FallbackValue_For_NonConvertibe_Target_Value_With_Data_Validation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if NET461 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { StringValue = "foo" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new ExpressionObserver(data, "StringValue", true), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -181,17 +167,13 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     BindingErrorType.Error, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     42), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public async void Should_Return_BindingNotification_For_Invalid_FallbackValue() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task Should_Return_BindingNotification_For_Invalid_FallbackValue() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if NET461 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { StringValue = "foo" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new ExpressionObserver(data, "StringValue"), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -203,21 +185,17 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new BindingNotification( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     new AggregateException( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        new InvalidCastException("Could not convert 'foo' to 'System.Int32'"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        new InvalidCastException("'foo' is not a valid number."), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         new InvalidCastException("Could not convert FallbackValue 'bar' to 'System.Int32'")), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     BindingErrorType.Error), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public async void Should_Return_BindingNotification_For_Invalid_FallbackValue_With_Data_Validation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task Should_Return_BindingNotification_For_Invalid_FallbackValue_With_Data_Validation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if NET461 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { StringValue = "foo" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new ExpressionObserver(data, "StringValue", true), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -229,10 +207,12 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new BindingNotification( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     new AggregateException( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        new InvalidCastException("Could not convert 'foo' to 'System.Int32'"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        new InvalidCastException("'foo' is not a valid number."), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         new InvalidCastException("Could not convert FallbackValue 'bar' to 'System.Int32'")), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     BindingErrorType.Error), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -244,6 +224,8 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             target.OnNext("foo"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal(5.6, data.DoubleValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -259,6 +241,8 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             target.OnNext("foo"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal(9.8, data.DoubleValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -270,6 +254,8 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             target.OnNext(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal(0, data.DoubleValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -281,6 +267,8 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             target.OnNext(AvaloniaProperty.UnsetValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Assert.Equal(0, data.DoubleValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -288,6 +276,7 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new Class1 { DoubleValue = 5.6 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var converter = new Mock<IValueConverter>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var target = new BindingExpression( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new ExpressionObserver(data, "DoubleValue"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 typeof(string), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -296,7 +285,9 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             target.Subscribe(_ => { }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            converter.Verify(x => x.Convert(5.6, typeof(string), "foo", CultureInfo.CurrentUICulture)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            converter.Verify(x => x.Convert(5.6, typeof(string), "foo", CultureInfo.CurrentCulture)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -312,7 +303,9 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             target.OnNext("bar"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            converter.Verify(x => x.ConvertBack("bar", typeof(double), "foo", CultureInfo.CurrentUICulture)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            converter.Verify(x => x.ConvertBack("bar", typeof(double), "foo", CultureInfo.CurrentCulture)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [Fact] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -339,6 +332,8 @@ namespace Avalonia.Markup.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         BindingErrorType.Error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.KeepAlive(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private class Class1 : NotifyingBase 
			 |