So from your earlier examples, and this definition, we know that
two DIEs, A and B, that have an attribute X that refers to some other
DIE can only equal if the DIEs pointed to by A->X and B->X, lets call
them DIE Y and Z, are equal AND have equal[-enough] contexts.
But nothing prevents us from marking Y and Z itself equal. So, lets
assume they are, and we replace them with an imported_unit DIE.
Right, you can't do that. They have to be separate. The way I'd thought
about this was to consolidate them as equal going into the collector, and
then explode them back to two copies in the output phase. But how to do
that was pretty hazy, and perhaps this approach never really made sense.