Why is this an issue?
Recursion is acceptable in methods, where you can break out of it. But with class types, you end up with code that will compile but not run if you
try to instantiate the class.
Noncompliant code example
class C1<T>
{
}
class C2<T> : C1<C2<C2<T>>> // Noncompliant
{
}
...
var c2 = new C2<int>();