static void InvokeFoo(this IClass1 e, IBCLClass1 x) { e.Foo(null); x.Foo(null); }
static T InvokeFoo <T>(this IClass1 <T> e, T t) { return(e.Foo(t)); }
static Bar <T> InvokeFoo <T>(this IClass1 <Bar <T> > e, Bar <T> t) { return(e.Foo(t)); }
static object InvokeFoo(this IClass1 <object> e) { return(e.Foo(null)); }