We are trying to sort these issue out right now. Public or not? Meh, for cooked files it doesn’t really matter except to say we might have to disable the error message.
What is clear is that the EDL is keenly interested in making sure subobjects of CDOs are loaded before we create any instances or load any derived classes. So regardless of if these subobjects are public or not, they need to be in the import table so that we can add the right dependencies.
It is all very icky. The code @head seems really close.