if (tag == NULL) return null; if (tag == INDEX) return (StateImpl) objectTable.get(in.readInt());
if (tag != OBJECT) return false;
	private StateImpl readState(DataInputStream in, long expectedTimestamp) throws IOException {		if (in.readByte() != STATE_CACHE_VERSION)			return null;		byte tag = readTag(in);		if (tag == NULL)			return null;		if (tag == INDEX)			return (StateImpl) objectTable.get(in.readInt());		long timestampRead = in.readLong();		if (expectedTimestamp >= 0 && timestampRead != expectedTimestamp)			return null;		StateImpl result = new StateImpl();		addToObjectTable(result);		int length = in.readInt();		if (length == 0)			return result;		for (int i = 0; i < length; i++)			result.basicAddBundle(readBundleDescription(in));		result.setTimeStamp(timestampRead);		result.setResolved(in.readBoolean());		if (!result.isResolved())			return result;		int resolvedLength = in.readInt();		for(int i = 0;i < resolvedLength;i++)			result.addResolvedBundle(readBundleDescription(in));		return result;	}