public void TestConversions() { CheckAgreement <bool>(x => x == true); CheckAgreement <byte>(x => x == 3); CheckAgreement <short>(x => x == 4); CheckAgreement <ushort>(x => x == 5); CheckAgreement <int>(x => x == 6); CheckAgreement <uint>(x => x == 7); CheckAgreement <long>(x => x == 8); CheckAgreement <ulong>(x => x == 9); CheckAgreement <Option <int> >(x => x == Option.Some(3)); CheckAgreement <Pair <int, int> >(x => x == new Pair <int, int> { Item1 = 1, Item2 = 2 }); CheckAgreement <(int, int)>(x => x == (1, 2)); CheckAgreement <IList <int> >(x => x == new List <int>() { 1, 2, 3 }); CheckAgreement <IList <IList <int> > >(x => x == new List <IList <int> >() { new List <int>() { 1 } }); CheckAgreement <FiniteString>(x => x == new FiniteString("hello")); CheckAgreement <Object2>(x => x == new Object2 { Field1 = 1, Field2 = 2 }); CheckAgreement <IDictionary <int, int> >(x => { var d = new Dict <int, int>(); d.Add(1, 2); Zen <Dict <int, int> > y = d; return(y.ContainsKey(4)); }); }