1 // Compiler options: -langversion:future
13 class A<T> : IIn<T>, IOut<T>
19 public static int Main ()
21 IIn<string> a_string = new A<string> ();
22 IIn<object> a_object = new A<object> ();
24 if (!(a_string is IIn<string>))
27 if ((a_string is IIn<object>))
30 if (!(a_object is IIn<string>))
33 if (!(a_object is IIn<object>))
36 IOut<string> b_string = new A<string> ();
37 IOut<object> b_object = new A<object> ();
39 if (!(b_string is IOut<string>))
42 if (!(b_string is IOut<object>))
45 if (b_object is IOut<string>)
48 if (!(b_object is IOut<object>))
51 Console.WriteLine ("OK");