private void createDescription(ProblemsHolder holder,
                                 final DataFlowInstructionVisitor visitor,
                                 PsiElement scope,
                                 Instruction @NotNull [] instructions) {
    ProblemReporter reporter = new ProblemReporter(holder, scope);

    reportFailingCasts(reporter, visitor);
    reportUnreachableSwitchBranches(visitor.getSwitchLabelsReachability(), holder);

    reportAlwaysFailingCalls(reporter, visitor);

    List<NullabilityProblem<?>> problems = NullabilityProblemKind.postprocessNullabilityProblems(visitor.problems().toList());
    reportNullabilityProblems(reporter, problems);
    reportNullableReturns(reporter, problems, scope);

    reportRedundantInstanceOf(visitor, reporter);

    reportArrayAccessProblems(holder, visitor);

    reportArrayStoreProblems(holder, visitor);

    if (REPORT_NULLABLE_METHODS_RETURNING_NOT_NULL && visitor.isAlwaysReturnsNotNull(instructions)) {
      reportAlwaysReturnsNotNull(holder, scope);
    }

    reportMutabilityViolations(holder, visitor.getMutabilityViolations(true),
                               JavaAnalysisBundle.message("dataflow.message.immutable.modified"));
    reportMutabilityViolations(holder, visitor.getMutabilityViolations(false),
                               JavaAnalysisBundle.message("dataflow.message.immutable.passed"));

    reportDuplicateAssignments(reporter, visitor);
    reportPointlessSameArguments(reporter, visitor);
    reportStreamConsumed(holder, visitor);
  }
private void createDescription(ProblemsHolder holder,
                                 final DataFlowInstructionVisitor visitor,
                                 PsiElement scope,
                                 Instruction @NotNull [] instructions)