T extends MyGeneric<T>
Обычно, это используется для того, чтобы ограничить тип Элементов родителем (интерфейсом или классом, абстрактным классом).
Например, T extends Animal<T>
можно будет использовать Dog, Cat и др. Но например, Car не подойдет.
Про CRTP говорится тут - https://stackoverflow.com/questions/52611146/alter...
Ответить что ли ...)))
Очень напоминает Построение Дерева, но в классе только один параметр - значит назовем простым связанным списком. Простым потому что только родитель знает потомка. Побольше параметров и дерево готово.