@Override public NFA<T> deserialize(DataInputView source) throws IOException { Set<State<T>> states = deserializeStates(source); long windowTime = source.readLong(); boolean handleTimeout = source.readBoolean(); NFA<T> nfa = new NFA<>(eventSerializer, windowTime, handleTimeout); nfa.states = states; nfa.eventSharedBuffer = sharedBufferSerializer.deserialize(source); Queue<ComputationState<T>> computationStates = new LinkedList<>(); StringSerializer stateNameSerializer = StringSerializer.INSTANCE; LongSerializer timestampSerializer = LongSerializer.INSTANCE; DeweyNumber.DeweyNumberSerializer versionSerializer = new DeweyNumber.DeweyNumberSerializer(); int computationStateNo = source.readInt(); for (int i = 0; i < computationStateNo; i++) { State<T> state = getStateByName(stateNameSerializer.deserialize(source), nfa); State<T> prevState = getStateByName(stateNameSerializer.deserialize(source), nfa); long timestamp = timestampSerializer.deserialize(source); DeweyNumber version = versionSerializer.deserialize(source); long startTimestamp = timestampSerializer.deserialize(source); int counter = source.readInt(); T event = null; if (source.readBoolean()) { event = eventSerializer.deserialize(source); } computationStates.add(ComputationState.createState( nfa, state, prevState, event, counter, timestamp, version, startTimestamp)); } nfa.computationStates = computationStates; return nfa; }