using System; class MainClass { public static void Main () { Test1 (l => l.GetItems ()); Test2 (l => l.GetItems2 ()); } static T[] Test1<T> (Func<IB, T[]> arg) { return null; } static IA<T>[] Test2<T> (Func<IB, IA<T>[]> arg) { return null; } } interface IA<U> { } interface IB { string[] GetItems (); IA<string>[] GetItems2 (); }