@Override
  public void check(@NotNull final GrControlFlowOwner owner, @NotNull final ProblemsHolder problemsHolder) {
    final Instruction[] flow = owner.getControlFlow();
    final DFAEngine<Object2IntMap<GrVariable>> engine = new DFAEngine<>(
      flow,
      new WritesCounterDFAInstance(),
      new WritesCounterSemilattice()
    );
    List<Object2IntMap<GrVariable>> dfaResult = engine.performDFAWithTimeout();
    if (dfaResult == null || dfaResult.isEmpty() || dfaResult.get(dfaResult.size() - 1) == null) {
      return;
    }

    for (Object2IntMap.Entry<GrVariable> entry : dfaResult.get(dfaResult.size() - 1).object2IntEntrySet()) {
      if (entry.getIntValue() == 1) {
        process(owner, entry.getKey(), problemsHolder);
      }
    }
  }
@Override
  public void check(@NotNull final GrControlFlowOwner owner, @NotNull final ProblemsHolder problemsHolder)