The problem as I see it is with Handle. It always returns a unique integer. That number is never re-used for the duration of the program run, even if the type instance it refers to is subsequently deleted.
That means that Handle could potentially run out of integers to assign, if it was called enough times on different type instances. The limit must be $7FFFFFFF as blitz uses 32-bit signed integers.
TBH, I don't know how Handle copes with this situation if it occurs, but I can't see any other outcome but a crash. Sure, $7FFFFFFF is a very large number and would take a long time to reach, but I guess it's technically possible.
That means that Handle could potentially run out of integers to assign, if it was called enough times on different type instances. The limit must be $7FFFFFFF as blitz uses 32-bit signed integers.
TBH, I don't know how Handle copes with this situation if it occurs, but I can't see any other outcome but a crash. Sure, $7FFFFFFF is a very large number and would take a long time to reach, but I guess it's technically possible.