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

    @bottomContainer.setCount(@count)

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

  attachBottom: (statusBar) ->
    @subscriptions.add atom.config.observe('linter.statusIconPosition', (statusIconPosition) =>

      @bottomContainer.setVisibility(displayLinterInfo)
    )

  removeBubble: ->
    @bubble?.destroy()
    @bubble = null

  dispose: ->
    @removeBubble()
    @subscriptions.dispose()
    @bottomBar?.destroy()
