Trying to find a better solution than "ifBreakpointPresentDisableOnce" for the problem, how to handle both stepping and having a breakpoint on the current line.
Things still to consider:
Rename ThreadState.runnable to running - would be semantically more correct(?)
Is the newly introduced ThreadState.stepping even correct and working? Perhaps a boolean property isStepping should be orthogonal (i. e. independent) from the thread states. For example, what happens if a stepping thread gets blocked and then unblocked? Will it become erroneously "runnable" instead of "stepping"?
Trying to find a better solution than "ifBreakpointPresentDisableOnce" for the problem, how to handle both stepping and having a breakpoint on the current line.
Things still to consider: