Still works with recursive generic type definitions