using System; using System.Collections.Generic; class Program { static void Main () { } public static void Transform (Area area, Func transform) where V : IA { Test (GetIB (), t => Transform2 (null, transform)); } static IB GetIB () where W : IA { return null; } static void Test (T values, Func func) { } public static IB Transform2 ( IB b, Func transform) where U : IA { return null; } } public class Area where TVector : IA { public IB GetSegments () { return null; } } public interface IB where TB : IA { } public interface IA { }