* @note we don't have to worry about the ast, as it won't change after we create the source module with it.
*/
@SuppressWarnings("unchecked")
private FindScopeVisitor getScopeVisitor(int line, int col) throws Exception {
Tuple key = new Tuple(line, col);
FindScopeVisitor scopeVisitor = this.scopeVisitorCache.getObj(key);
if (scopeVisitor == null) {
scopeVisitor = new FindScopeVisitor(line, col);
if (ast != null) {
ast.accept(scopeVisitor);
}
this.scopeVisitorCache.add(key, scopeVisitor);
}