interface Generator { (): T; } function Generate(func: Generator): U { return Generate(func); }