One of the feature of the TListOf is that if an entity is unloaded and then reloaded, it must re-use the same core/meta object (so here the same TEnum).   The only entity that knows whether there is already such an unloaded TEnum object is the list itself.

So the whole 'create the enum type' section should probably just look like:

    enumlist->Get(&D, name);