But the descendant of an expanded class does not conform to that expanded class type (at least not in the current implementation). I tried with a descendant of the expanded class and the compiler would not accept it as actual generic. So your implementation allows a class to inherit from an expanded class but says that the type of this descendant does not conform to the type of the expanded class from which it inherited.