void (@Nullable DfaInstructionState lastInstructionState, @NotNull Throwable e) { Attachment[] attachments = {new Attachment("method_body.txt", myPsiAnchor.getText())}; 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)); 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); }