       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')
+    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 {}

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

          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
