But, the following code can be compiled:
interface IFoo
{
T Get();
//bool TryGet(out T value); // doesn't work: Invalid variance: The type parameter 'T' must be invariantly valid on 'IFoo.TryGet(out T)'. 'T' is covariant.
bool TryGet(Action value); // works!
}