   # selectively pushing the appropriate HintCoordinator.onExit handlers.
   activateLink: (linkMatched, userMightOverType=false) ->
     @removeHintMarkers()
-    localHintDescriptor = HintCoordinator.getLocalHintMarker linkMatched.hintDescriptor
-    clickEl = localHintDescriptor?.element
-
-    if clickEl?
+
+    if linkMatched.isLocalMarker
+      localHintDescriptor = linkMatched.localHintDescriptor
+      clickEl = localHintDescriptor.element
       HintCoordinator.onExit.push (isSuccess) =>
         if isSuccess
           if localHintDescriptor.reason == "Frame."

      @localHints = LocalHints.getLocalHints()
      console.log "getHintDescriptors", frameId, "[#{@localHints.length}]" if @debug
      @sendMessage "postHintDescriptors", hintDescriptors:
        @localHints.map ({linkText, showLinkText, hasHref}, localIndex) ->
          {linkText, showLinkText, hasHref, frameId, localIndex}

  # We activate LinkHintsMode() in every frame and provide every frame with exactly the same hint descriptors.
  # We also propagate the key state between frames.  Therefore, the hint-selection process proceeds in lock

  createMarkerFor: (desc) ->
    marker =
      if desc.frameId == frameId
        localHintDescriptor = HintCoordinator.getLocalHintMarker desc
        el = DomUtils.createElement "div"
        el.rect = localHintDescriptor.rect
        el.style.left = el.rect.left + window.scrollX + "px"
        el.style.top = el.rect.top  + window.scrollY  + "px"
        extend el,
          className: "vimiumReset internalVimiumHintMarker vimiumHintMarker"
          showLinkText: localHintDescriptor.showLinkText
          localHintDescriptor: localHintDescriptor
      else
        {}

    extend marker,
      hintDescriptor: desc
      isLocalMarker: desc.frameId == frameId
      linkText: desc.linkText
      stableSortCount: ++@stableSortCount

  # Handles <Shift> and <Ctrl>.
