   invalidateEditorCache: (editor) ->
     symNavParserCache[editor.getPath()] = null
 
-  #get parsed buffer data - from cache, if possible, else
+  #parse identifiers out of scopes - from cache, if possible, else
   #we calculate it and cache it.
   parseEditor: (editor) ->
-    if symNavParserCache[editor.getPath()]?
+    if symNavParserCache[editor.getPath()]
       return symNavParserCache[editor.getPath()]
 
     esprima = require('esprima-fb')

  #works top down from global scope
  getIdentifierAtCursor: ->
    editor = @util.getActiveEditor()
    if editor
      cursorPos = editor.getCursorBufferPosition()
      parsedBuffer = @parseEditor editor
      if !parsedBuffer?  then return null

      syntaxTree = parsedBuffer.syntaxTree
      scopes = parsedBuffer.scopes

      #run through scopes, get identifiers in each
      #if we find one at the cursor position, look
      #for the next identifier
      for scope in scopes
        identifiers = @getIdentifiersInScope scope
        cursorIds = identifiers.filter (node) =>
          @util.positionIsInsideLocation(cursorPos, node.loc)


            id: cursorIds[0],
            pos: cursorPos.column - cursorIds[0].loc.start.column,
            usages: usages,
            scope: parsedScope.scope
          }
    return null

