type cl = class public procedure p(f: Func>); begin end; procedure p(f: Func>); begin var res := f(3).ToList(); assert(res.Count = 4); assert(res[0] = 0); assert(res[1] = 1); assert(res[2] = 4); assert(res[3] = 9); end; procedure tt(); begin p(x -> Range(0, x).Select(y -> y * y)); end; end; begin (new cl()).p(x -> Range(0, x).Select(y -> y * y)); (new cl()).tt(); end.