@Override
    protected DfaInstructionState @NotNull [] acceptInstruction(@NotNull DfaInstructionState instructionState) {
      Instruction instruction = instructionState.getInstruction();
      if (instruction instanceof PushInstruction) {
        final DfaValue var = ((PushInstruction)instruction).getValue();
        if (var instanceof DfaVariableValue) {
          final PsiElement psiVar = ((DfaVariableValue)var).getPsiVariable();
          if (psiVar instanceof PsiParameter) {
            myUsedParameters.add((PsiParameter)psiVar);
          }
        }
      }

      if (instruction instanceof AssignInstruction) {
        final DfaValue value = ((AssignInstruction)instruction).getAssignedValue();
        if (value instanceof DfaVariableValue) {
          final PsiElement psiVariable = ((DfaVariableValue)value).getPsiVariable();
          if (psiVariable instanceof PsiParameter) {
            myPossiblyViolatedParameters.remove(psiVariable);
          }
        }
      }

      if (instruction instanceof ReturnInstruction) {
        DfaMemoryState memState = instructionState.getMemoryState();
        for (PsiParameter parameter : myPossiblyViolatedParameters.toArray(PsiParameter.EMPTY_ARRAY)) {
          final DfaVariableValue dfaVar = PlainDescriptor.createVariableValue(getFactory(), parameter);
          if (!memState.getDfType(dfaVar).isSuperType(DfTypes.NULL)) {
            myParametersWithSuccessfulExecutionInNotNullState.add(parameter);
          }
          else {
            myPossiblyViolatedParameters.remove(parameter);
          }
        }
      }

      return super.acceptInstruction(instructionState);
    }
@Override
    protected DfaInstructionState @NotNull [] acceptInstruction(@NotNull DfaInstructionState instructionState)