private static @Nullable ReadBeforeWriteState
  getLastReadBeforeWriteState(Instruction[] flow, boolean onlyFirstRead) {
    DFAEngine<ReadBeforeWriteState> engine = new DFAEngine<>(
      flow,
      new ReadBeforeWriteInstance(onlyFirstRead),
      ReadBeforeWriteSemilattice.INSTANCE
    );
    List<ReadBeforeWriteState> dfaResult = engine.performDFAWithTimeout();
    return dfaResult == null ? null : dfaResult.get(dfaResult.size() - 1);
  }
private static @Nullable ReadBeforeWriteState
  getLastReadBeforeWriteState(Instruction[] flow, boolean onlyFirstRead)