Checkpoint: Eliminating the need for the enumerator functions for walking node children
Checkpoint: Simple reflection-based automatic traversal of node fields.
Checkpoint: More complete reflection-based node traversal
Checkpoint: Moved various annotated nodes to Traversal attributes
Checkpoint: Implement JSNodeChildEnumerator.IncludeSelf
Fix NodeTraversalData not being correct for inheritance scenarios
Inherit value names in JSExpression
Fix SelfAndChildrenRecursive.
Add basic ast traversal tests.
Fix JSExpression overflowing the values array.
Disable AST traversal for JSILIdentifier.
Fix the AllChildrenRecursive and SelfAndChildrenRecursive enumerators, and add a test.
Minor tweaks to make things compatible with the new generic traversal
Switch to a much simpler, correct implementation of SelfAndChildrenRecursive/AllChildrenRecursive, at the cost of some garbage being created (it gets used less anyway)
Generate precompiled delegates for traversal records using LINQ for better performance.
If a traversal record returns null, NodeChildEnumerator will now skip over it.
Make GetValueName self-optimize so it doesn't have to walk the inheritance tree every time it's called
Change JSAstVisitor so that by default it will not recurse into nested JSFunctionExpressions. This addresses a few race conditions where it was possible for a transform to run twice on a lambda expression.
Fix JSNodeTraversalData.Get constructing a closure on every invocation