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>()