interface IObserver<in T>;
{}
interface IObservable<out T>;
{}
public delegate void DContravariant<in A>(A argument);
public delegate A DCovariant<out A>();
void MethodWithGenericParameter<T>();
private static List<string> leftHalfDiamond = new List<string>();
private static List<Tuple<int, string>> leftHalfDiamond = new List<Tuple<int, string>>();