@Override
  public DfaInstructionState[] accept(@NotNull DataFlowInterpreter interpreter, @NotNull DfaMemoryState stateBefore) {
    DfaCondition condTrue = stateBefore.pop().eq(myCompareTo);
    DfaCondition condFalse = condTrue.negate();

    if (condTrue == DfaCondition.getTrue()) {
      return new DfaInstructionState[] {new DfaInstructionState(interpreter.getInstruction(getOffset()), stateBefore)};
    }

    if (condFalse == DfaCondition.getTrue()) {
      return nextStates(interpreter, stateBefore);
    }

    ArrayList<DfaInstructionState> result = new ArrayList<>(2);

    DfaMemoryState elseState = stateBefore.createCopy();

    if (stateBefore.applyCondition(condTrue)) {
      result.add(new DfaInstructionState(interpreter.getInstruction(getOffset()), stateBefore));
    }

    if (elseState.applyCondition(condFalse)) {
      result.add(nextState(interpreter, elseState));
    }

    return result.toArray(DfaInstructionState.EMPTY_ARRAY);
  }
@Override
  public DfaInstructionState[] accept(@NotNull DataFlowInterpreter interpreter, @NotNull DfaMemoryState stateBefore)