ByteArrayInputStream bais = new ByteArrayInputStream(state);
MarshalledValueInputStream in = new MarshalledValueInputStream(bais);
in.readShort(); // the version, which we discard
transientSize = in.readInt();
associatedSize = in.readInt();
persistentSize = in.readInt();
in.close();
if (log.isTraceEnabled()) {
log.trace("transient state: " + transientSize + " bytes");
log.trace("associated state: " + associatedSize + " bytes");
log.trace("persistent state: " + persistentSize + " bytes");