using System;
public interface I1 { void i1(); }
public interface I2 { void i2(); }
class C : I1, I2
{
public void i1() { Console.WriteLine("I1.i1()"); }
public void i2() { Console.WriteLine("I2.i2()"); }
}
public class Test
{
public static void Main()
{
f(new C());
}
public static void f<T>(T t)
where T : I1, I2
{
t.i1();
t.i2();
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGludGVyZmFjZSBJMSB7IHZvaWQgaTEoKTsgfQpwdWJsaWMgaW50ZXJmYWNlIEkyIHsgdm9pZCBpMigpOyB9CgpjbGFzcyBDIDogSTEsIEkyCnsKCXB1YmxpYyB2b2lkIGkxKCkgeyBDb25zb2xlLldyaXRlTGluZSgiSTEuaTEoKSIpOyB9CglwdWJsaWMgdm9pZCBpMigpIHsgQ29uc29sZS5Xcml0ZUxpbmUoIkkyLmkyKCkiKTsgfQp9CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJZihuZXcgQygpKTsKCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIGY8VD4oVCB0KSAKCQl3aGVyZSBUIDogSTEsIEkyCgl7CgkJdC5pMSgpOwoJCXQuaTIoKTsKCX0KfQ==