in src/main/java/com/intellij/rt/debugger/agent/CaptureStorage.java [533:568]
private static ArrayList<StackTraceElement> getStackTrace(CapturedStack stack, int limit) {
ArrayList<StackTraceElement> res = new ArrayList<>();
while (stack != null && res.size() <= limit) {
List<StackTraceElement> stackTrace = trimInitAgentFrames(stack.getStackTrace());
if (stack instanceof DeepCapturedStack) {
int size = stackTrace.size();
int newEnd = Integer.MAX_VALUE;
for (int i = 0; i < size; i++) {
StackTraceElement elem = stackTrace.get(i);
if (elem.getMethodName().endsWith(GENERATED_INSERT_METHOD_POSTFIX)) {
// End stack trace like this: ..., "foo$$$capture", "foo"
newEnd = i + 2;
break;
} else if (elem == ASYNC_STACK_ELEMENT) {
newEnd = i;
break;
}
}
if (newEnd > size) {
stack = null; // Insertion point was not found - stop
}
else {
stackTrace = stackTrace.subList(0, newEnd);
stack = ((DeepCapturedStack)stack).myInsertMatch;
}
}
else {
stack = null;
}
res.addAll(stackTrace);
if (stack != null) {
res.add(ASYNC_STACK_ELEMENT);
}
}
return res;
}