var b = new B();
var c = new C<B>();
_ = (C<A<int>>)c;
_ = (IC<A<int>>)c;
interface IA<T> {}
class A<T> : IA<T> {}
class B : A<int> {}
interface IC<out T> {
public T value {get;}
public T DoSomething();
}
class C<T> : IC<T> {
public C() {}
public C(T val) {
value = val;
public T DoSomething() => default;