idx = instanceCache.size();
instanceCache.add(unshared ? UNSHARED : obj);
if (obj instanceof Externalizable) {
final Externalizable externalizable = (Externalizable) obj;
if ((descriptor.getFlags() & SC_BLOCK_DATA) != 0) {
externalizable.readExternal(blockUnmarshaller);
blockUnmarshaller.readToEndBlockData();
blockUnmarshaller.unblock();
} else {
// data is not in block format!
externalizable.readExternal(this);