Hm, my thoughts were more along of a list of causes rather than a structured map bundling everything semantically. More along the lines of just an exception sometimes having more than one cause.
Imagine a linter-type situation. You almost never want to stop execution early, but at the end, either there's no problem, or there's is a (1) problem, which is that there are 1-or-more problems during linting.
Granted, a linter *could* just as well have used the ex-map (or really, no exceptions at all), but the test runner case is what sticks out to me. `lazytest` runs everything and returns a report with the number of exceptions, by order, commensurate to the failing test cases. In this case, all the semantics are already there, just a list of exceptions by order of reported failure would be perfect, but as it stands a semantic/bundling layer *must* be invented used and maintained, where one isn't necessary at all, so ExecutionException is not the right fit to my understanding.
I do see now that the `cause` construct goes down to Throwable, and isn't an ExceptionInfo-specific thing, but my proposed design still stands, insofar as a `causes` field can be introduced, wherefrom `cause` can be a getter.
Past the test runner use case, this can also be a bottleneck for code generation in particular, and some macro setups, and parallelism use cases, all of which right now could either (a) fail-first or (b) do bespoke wrappings and bundlings, introducing nesting and structure, where really (c) just having multiple causes on ExceptionInfo would've been good enough for all of these.
All of these aren't necessarily common problems, but there's really no way of addressing them in core besides bespoke messes and exception DSLs, and attempting to solve it outside of core could only work with more of the same. Maybe this could be solved with some ""canonical"" pattern in the docs to kinda standardise things a bit? But I don't see how this can be reconciled *strictly* from userland