     @state = @linter.state
     @subscriptions = new CompositeDisposable
     @messages = []
-    @markers = []
+    @markers = new Map()
     @panel = new BottomPanel().prepare()
     @bottomContainer = new BottomContainer().prepare(@linter.state)
     @bottomBar = null

      messages = @messages.filter (message) -> message.currentLine
    @panel.updateMessages messages, @state.scope is 'Project'

  renderPanelMarkers: ->
    @removeMarkers()
    activeEditor = atom.workspace.getActiveTextEditor()
    return unless activeEditor
    @messages.forEach (message) =>
      return unless message.currentFile
      @markers.push marker = activeEditor.markBufferRange message.range, {invalidate: 'inside'}
      activeEditor.decorateMarker(
        marker, type: 'line-number', class: "linter-highlight #{message.class}"
      )

    @subscriptions.add @bottomContainer.onDidChangeTab =>
      @renderPanelMessages()

  render: ({added, removed, messages}) ->
    @messages = @classifyMessages(messages)
    @renderPanelMessages()
    @renderPanelMarkers({added, removed})
    @renderBubble()
    @renderCount()

