* Fix#4706: Comments before a PARAM_START token stay before that token
* Simplify nodes
* Add function-in-function test
* Fix#4706: Comments after class name should go after the identifier that's after `class`, not the variable assigned to
* Fix#4706: Top-level identifiers with trailing comments get wrapped in parentheses (around the comment too) so that Flow doesn't interpret it as a JavaScript label
* Cleanup
* If the source has parentheses wrapping an identifier followed by a block comment, output those parentheses rather than optimizing them away; this is a requirement of Flow, to distinguish from JavaScript labels
* More tests for Flow comments