I believe the situation is that when you create a new instance of a type the type list is expanded in memory. However the reverse is not true, when you delete a type no memory is freed thus avoiding any fragmentation problems. (obviously deleted instances would get reused in this scenario when you create new instances).