private void reportDfaProblem(@Nullable DfaInstructionState lastInstructionState, @NotNull Throwable e) {
    Attachment[] attachments = {new Attachment("method_body.txt", myPsiAnchor.getText())};
    try {
      String flowText = myFlow.toString();
      if (lastInstructionState != null) {
        int index = lastInstructionState.getInstruction().getIndex();
        flowText = flowText.replaceAll("(?m)^", "  ");
        flowText = flowText.replaceFirst("(?m)^ {2}" + index + ": ", "* " + index + ": ");
      }
      attachments = ArrayUtil.append(attachments, new Attachment("flow.txt", flowText));
    }
    catch (ProcessCanceledException pce) {
      throw pce;
    }
    catch (Exception ex) {
      ex.addSuppressed(e);
      LOG.error("While gathering flow text", ex);
    }
    if (lastInstructionState != null) {
      DfaMemoryState memoryState = lastInstructionState.getMemoryState();
      String memStateText = null;
      try {
        memStateText = memoryState.toString();
      }
      catch (RuntimeException second) {
        e.addSuppressed(second);
      }
      if (memStateText != null) {
        attachments = ArrayUtil.append(attachments, new Attachment("memory_state.txt", memStateText));
      }
    }
    LOG.error("Dataflow interpretation error (wasForciblyMerged = " + myWasForciblyMerged + ")", e, attachments);
  }
private void reportDfaProblem(@Nullable DfaInstructionState lastInstructionState, @NotNull Throwable e)