interface IObserver; {} interface IObservable; {} public delegate void DContravariant(A argument); public delegate A DCovariant(); void MethodWithGenericParameter(); private static List leftHalfDiamond = new List(); private static List> leftHalfDiamond = new List>();