obj = externalizer.createExternal(type, blockUnmarshaller, DEFAULT_CREATOR);
instanceCache.set(idx, obj);
externalizer.readExternal(obj, blockUnmarshaller);
blockUnmarshaller.readToEndBlockData();
blockUnmarshaller.unblock();
final Object resolvedObject = objectResolver.readResolve(serializableClass.hasReadResolve() ? serializableClass.callReadResolve(obj) : obj);
if (unshared) {
instanceCache.set(idx, null);
} else if (obj != resolvedObject) {
instanceCache.set(idx, resolvedObject);
}