     # 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.

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

    normalizeTypesForAllSymbols()
    matchedSymbols

  cssSelectorFromScopes: (scopes) ->
    selector = ''

    # class MyClass extends SomeModule # This line parses SomeModule as a class
    # ```
    # `class` types are higher priority than `variables`
    cacheSymbol = (word, type, bufferRow, scopes) =>
      wordKey = getWordKey(word)
      cachedSymbol = symbols[wordKey]
      if cachedSymbol?
        currentTypePriority = @config[type].priority
        cachedTypePriority = @config[cachedSymbol.type].priority
        cachedSymbol.type = type if currentTypePriority > cachedTypePriority
        console.log cachedSymbol
        cachedSymbol.bufferRows.push(bufferRow)
        cachedSymbol.scopes.push(scopes)
      else
        symbols[wordKey] = {word, type, bufferRows: [bufferRow], scopes: [scopes]}

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

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