compiler rewritten. Now it relies on esprima syntax tree