Higher-Kinded Types for C#