     @errorMarkers = []
     @errorTooltips = new CompositeDisposable
     @subscriptions = new CompositeDisposable
+    @errorTooltipsMap = new WeakMap
 
     @subscriptions.add @editor.onDidSave =>
       @doCheck() if atom.config.get('haskell-ghc-mod.checkOnSave')

    @errorMarkers = []
    @errorTooltips.dispose()
    @errorTooltips = new CompositeDisposable

  destroy: ->
    @clearError()

    @editor.decorateMarker marker,
      type: 'highlight'
      class: klass
    setTimeout (=>@addTooltip(message,row)), 100
    @errorTooltips.add @editor.onDidChangeScrollTop => @addTooltip(message,row)
    @errorTooltips.add @editor.onDidChangeCursorPosition (event) =>
      return unless event.newBufferPosition.isEqual([row,column])
      @showMessage range,message

  getType: ->
    @process.getType @getText(), @getRange(), @showMessage

  insertType: ->
    symbol = @getSymbol()
