JS: using a proper AST for JavaScript source code, with infrastructure for later support of source maps