transform(tree) {
    let reporter = this.reporter_;
    let validate = this.validate_;

    this.treeTransformers_.every((transformTree) => {
      tree = transformTree(tree);
      if (reporter.hadError())
        return false;
      if (validate)
        ParseTreeValidator.validate(tree);
      return true;
    })

    return tree;
  }
This is the root of the code generation pass.
Each pass translates one contruct from Traceur to standard JS constructs.
The order of the passes matters.

@param {ParseTree} tree
@return {ParseTree}