I see...the "problem" is, that the name has to be (read: is supposed to be) unique within a world's context. There's an ugly internal dependency between an object and its world, which is why you can't assign an object to two worlds. The objects themselves don't know from each other, only their world does. When calling setName(<String>) on an unassigned object (i.e. after loading it), there's no check for the name, because there is no world to ask. Once you've assigned that object and try to change the name, the world will be asked, if it knows of an object with this name. If you really want to name them all the same (may i ask why?), make a copy after loading that doesn't get assigned to a world, clone that one and set the name before adding it to a world. That should work, but you'll break the method that tries to get an object by name from a world with this.
The correct fix would be not to allow the same names, but to avoid them on a VM wide base. However, i'm not going to fix this, because it might break legacy code for no real gain.