srecord noeq LeftArrowScriptAutoCompleter(GazelleV_LeftArrowScriptParser parser) { LS tok; CharInToken cursor; S typedCharacters; void seek(S text, int iChar) { parser.setText(text); parser.init(); tok = parser.tok; cursor = charIndexToCharInToken(tok, iChar-1); typedCharacters = takeFirst(cursor.token(), cursor.iChar+1); } ScoredStringSearcher searcher() { ScoredStringSearcher searcher = new(typedCharacters); searcher.addAll(globalMethodNames()); ret searcher; } swappable Cl globalMethodNames() { ret concatMap methodNames(parser.functionContainers); } Cl getCompletions() { ret searcher()!; } }