DfaInstructionState[] (@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); }