nl_tokens: Finds the highest element in the tree we can find that starts at the provided position . The element must be a direct child of some node list in the tree . This way after we return it we can easily return its next sibling in the list .
pl_tokens: function findHighestListElementThatStartsAtPosition ( position ) { // Clear out any cached state about the last node we found. currentArray = undefined ; currentArrayIndex = - 1 /* Value */ ; current = undefined ; // Recurse into the source file to find the highest node at this position. forEachChild ( sourceFile , visitNode , visitArray ) ; return ; function visitNode ( node ) { if ( position >= node . pos && position < node . end ) { // Position was within this node.  Keep searching deeper to find the node. forEachChild ( node , visitNode , visitArray ) ; // don't procede any futher in the search. return true ; } // position wasn't in this node, have to keep searching. return false ; } function visitArray ( array ) { if ( position >= array . pos && position < array . end ) { // position was in this array.  Search through this array to see if we find a // viable element. for ( var i = 0 , n = array . length ; i < n ; i ++ ) { var child = array [ i ] ; if ( child ) { if ( child . pos === position ) { // Found the right node.  We're done. currentArray = array ; currentArrayIndex = i ; current = child ; return true ; } else { if ( child . pos < position && position < child . end ) { // Position in somewhere within this child.  Search in it and // stop searching in this array. forEachChild ( child , visitNode , visitArray ) ; return true ; } } } } } // position wasn't in this array, have to keep searching. return <mask> ; } }