     # without warning.
     tokenizedLines = editor.displayBuffer.tokenizedBuffer.tokenizedLines
 
-    symbolTypes = {}
-    matchedSymbols = []
+    symbols = {}
 
     # Handle the case where a symbol is a variable in some cases and, say, a
     # class in others. We want all symbols of the same name to have the same type. e.g.

    # class MyClass extends SomeModule # This line parses SomeModule as a class
    # ```
    # `class` types are higher priority than `variables`
    cacheSymbolType = (word, currentType) =>
      word = getWordKey(word)
      return symbolTypes[word] = currentType unless symbolTypes[word]?
      currentTypePriority = @config[currentType].priority
      cachedTypePriority = @config[symbolTypes[word]].priority
      symbolTypes[word] = currentType if currentTypePriority > cachedTypePriority

    getWordKey = (word) ->
       # some words are reserved, like 'constructor' :/
      word + '$$'

    normalizeTypesForAllSymbols = ->
      for symbol in matchedSymbols
        wordKey = getWordKey(symbol.word)
        symbol.type = symbolTypes[wordKey] if symbolTypes[wordKey]?
      return

    for {tokens}, bufferRow in tokenizedLines
      for token in tokens

            if selector.matches(scopes) and matches = token.value.match(options.wordRegex)
              for word in matches
                if word.length >= minimumWordLength
                  cacheSymbol(word, type, bufferRow, scopes)
              break

    (symbol for wordKey, symbol of symbols)

  cssSelectorFromScopes: (scopes) ->
    selector = ''
