Adjust compiler to use the new `Pattern` and `PatternIterator` classes so we can at least compile all non-destructuring code (#1945)
Implemented first step of nested destructuring.
Implemented destructuring with spreads (#1945)
Implemented nested destructuring (#1945)
Implemented support for destructuring in normal for loops (#1945)
Fixed .src files for tests now that we generate slightly different for loops (#1945)
Added support for `Tree.Variable` to the synthetic naming class (#1945)
Implemented support for destructuring in for comprehensions (#1945)
Fixed .src files because of changes to the code generation of for comprehenssions (#1945)
Added support for `ForIterator` and `Pattern` to the synthetic naming (#1945)
Harmonized naming of temp variables for destructuring (#1945)
Fixed .src because of changes to naming of destructuring temp vars (#1945)
Added helper method for dealing with naming of `Destructure` elements (#1945)
Added transform dealing with `Destructure` and added 2 helper methods for getting the type or expression from an element that's either a `Variable` or a `Destructure` (#1945)
For destructuring we need to deal with multiple substitutions at once (#1945)
Simplified `VarDefBuilder` by moving the boxing and erasure code out to the calling environment. (#1945)
Added `buildDefOnly()` to `VarDefBuilder` to only get the variable definition witout its initial value.
Allow passing a null initial value to the transform methods of `Destructure`, `Pattern` and `Variable` (#1945)
Implemented support for destructuring in if-statements (#1945)
Fixed .src files that were changed because of changes to the generation of if-statements (#1945)
Added test for destructuring (#1945)
Added some FIXMEs for places that still need to be checked for destructuring support (#1945)