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

          matched = true
          break
        _.last(executed).push state
        #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 = []
    for row in [0 ... @aceSession.getLength()]
      unless executedRows[row]
        @aceSession.removeGutterDecoration row, 'executing'
        @aceSession.removeGutterDecoration row, 'executed'
        @decoratedGutter[row] = ''
    if not executed.length or (@spell.name is "plan" and @spellThang.castAether.metrics.statementsExecuted < 20)
      @toolbarView?.toggleFlow false
      @debugView.setVariableStates {}
