P.S. The current implementation also does not distinguish between a broken contract vs. a bug or problem encountered by the contract code. For example:
Last time I checked it also treated OOM and access violation (on windows) as contract failure too. Any Throwable.
