delegate T Covariant<out T>();
delegate void Contravariant<in T>(T value);
static void Test() {
Covariant<object> covariantObj;
Covariant<int> covariantInt = () => 3;
covariantObj = covariantInt;
Contravariant<object> contravariantObj = myObj => Console.WriteLine(myObj);
Contravariant<int> contravariantInt;
contravariantInt = contravariantObj;
}