<span class="hljs-keyword">interface</span> <span class="hljs-title">IObserver</span><<span class="hljs-keyword">in</span> <span class="hljs-title">T</span>>;
{}
<span class="hljs-keyword">interface</span> <span class="hljs-title">IObservable</span><<span class="hljs-keyword">out</span> <span class="hljs-title">T</span>>;
{}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-built_in">delegate</span> <span class="hljs-keyword">void</span> <span class="hljs-title">DContravariant</span><<span class="hljs-keyword">in</span> <span class="hljs-title">A</span>>(<span class="hljs-params">A argument</span>)</span>;
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-built_in">delegate</span> A <span class="hljs-title">DCovariant</span><<span class="hljs-keyword">out</span> <span class="hljs-title">A</span>>()</span>;
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">MethodWithGenericParameter</span><<span class="hljs-title">T</span>>()</span>;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> List<<span class="hljs-built_in">string</span>> leftHalfDiamond = <span class="hljs-keyword">new</span> List<<span class="hljs-built_in">string</span>>();
<span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> List<Tuple<<span class="hljs-built_in">int</span>, <span class="hljs-built_in">string</span>>> leftHalfDiamond = <span class="hljs-keyword">new</span> List<Tuple<<span class="hljs-built_in">int</span>, <span class="hljs-built_in">string</span>>>();