Finally! Assignment is done.

All works now. The culprit turned out to be System.arrayCopy that
apparantly only does shallow copies, leaving the copies references of
the source. Changing the copy constructors to using deep copy instead
fixed most of the issues, apart from some minor ones in the new blood
injection part.