- you state that those primitive objects are the only ones which
shouldn't necessarily be defined in a package. I seem to recall that at some point we had entries like: (MSE.Class (back then it was still mse) (id:...) (name: Boolean)) as a toplevel statement; not in a package; to which we referred by id.
This was a bug.
Since you force classes to be in packages, if instead of saying "you don't have to specify built-in objects", you would say "you are not allowed to specify built-in objects", this would solve the problem. Then all classes are named "Package.Class", and if there is no "." in the string, this means it's a ref to one of the built-ins. It would also make developing an MSE-reader more straightforward.