DfaInstructionState[] (@NotNull DataFlowInterpreter interpreter, @NotNull DfaMemoryState stateBefore) { NullabilityProblemKind.NullabilityProblem<?> problem = getProblem(); if (problem.thrownException() == null) { checkNotNullable(interpreter, stateBefore, stateBefore.peek(), problem); } else { DfaValue value = stateBefore.pop(); boolean isNull = interpreter instanceof StandardDataFlowInterpreter && ((StandardDataFlowInterpreter)interpreter).stopOnNull() && stateBefore.getDfType(value) == NULL; if (myTransferValue == null) { stateBefore.push(dereference(interpreter, stateBefore, value, problem)); if (isNull) { return DfaInstructionState.EMPTY_ARRAY; } } else { List<DfaInstructionState> result = new ArrayList<>(); DfaMemoryState nullState = stateBefore.createCopy(); stateBefore.push(dereference(interpreter, stateBefore, value, problem)); if (!isNull) { result.add(nextState(interpreter, stateBefore)); } if (nullState.applyCondition(value.eq(NULL))) { List<DfaInstructionState> dispatched = myTransferValue.dispatch(nullState, interpreter); for (DfaInstructionState npeState : dispatched) { npeState.getMemoryState().markEphemeral(); } result.addAll(dispatched); } return result.toArray(DfaInstructionState.EMPTY_ARRAY); } } return nextStates(interpreter, stateBefore); }