Please provide documentation and example on how to perform an AST transformation within the normal process of parsing, typechecking, optimizing and bytecode generation - most importantly on how to feed an AST into typechecking and compilation. [With compilation I mean javascript or bytecode generation]