final StateReader reader,
final KeyCreator keyCreator,
final VersionCreator versionCreator,
final Map<String, DataEncryption> dataEncrypters,
final ObjectAdapter object) {
final ResolveState resolveState = ResolveState.RESOLVING;
object.changeState(resolveState);
Version version = null;
final String versionString = reader.readVersion();
if (!versionString.equals("")) {
final String user = reader.readUser();
final String time = reader.readTime();
version = versionCreator.version(versionString, user, time);
}
String encryptionType = reader.readEncrytionType();
readFields(reader, object, keyCreator, dataEncrypters.get(encryptionType));
object.setOptimisticLock(version);
object.changeState(resolveState.getEndState());
}