class List <t> {
  public void foo <b> (List <t> x) {
    System.Console.WriteLine ("{0} - {1}", typeof (t), x.GetType ());
  }
}

class C {}
class D {}


class M {
  public static void Main () {
    List <D> x = new List<D> ();
    x.foo <C> (x);
    List <string> y = new List<string> ();
    y.foo <C> (y);
  }
}