Since ReplayModel always seeks to the preceding mark as the first step of the replayToBreakpointHitTask, attempting to replay to a breakpoint at mark index 0 causes an error.
Can this be special-cased in the task workflow? Or, do we need to change the capabilities of replayUpToMark so that it may "destructively" replay to the current mark?
replayUpToMark normally replays until just before the input is dispatched, so I don't think it makes sense to do nothing if we're on mark 42, breakpoint 5, and attempt to replay to mark 42. Are there any cases where we would need the "non-destructive" behavior?
I suppose it's fine to always do it destructively. We'll need to add checks in the UI to do nothing if already at the specified mark. For example, picking up and dropping a slider in the same place, or double clicking an input twice.
Those actually still do nothing after this change, as long as the input hasn't been dispatched yet.