           matched = true
           break
         _.last(executed).push state
+        executedRows[state.range[0].row] = true
         #state.executing = true if state.userInfo?.time is @thang.world.age  # no work
     currentCallIndex ?= callNumber - 1
     #console.log "got call index", currentCallIndex, "for time", @thang.world.age, "out of", states.length

      markerRange.end.detach()
      @aceSession.removeMarker markerRange.id
    @markerRanges = []
    @aceSession.removeGutterDecoration row, 'executing' for row in [0 ... @aceSession.getLength()]
    @aceSession.removeGutterDecoration row, 'executed' for row in [0 ... @aceSession.getLength()]
    $(@ace.container).find('.ace_gutter-cell.executing').removeClass('executing')
    $(@ace.container).find('.ace_gutter-cell.executed').removeClass('executed')
    if not executed.length or (@spell.name is "plan" and @spellThang.castAether.metrics.statementsExecuted < 20)
      @toolbarView?.toggleFlow false
      @debugView.setVariableStates {}

    flow ?= @spellThang?.castAether?.flow
    return unless flow
    executed = []
    executedRows = {}
    matched = false
    states = flow.states ? []
    currentCallIndex = null
