transformBlock(tree) {
    let labels = this.getLabels_();
    let label = this.clearCurrentLabel_();

    // NOTE: tree may contain state machines already ...
    let transformedTree = super.transformBlock(tree);
    let machine = this.transformStatementList_(transformedTree.statements);

    if (machine === null)
      return transformedTree;

    if (label) {
      let states = [];
      for (let i = 0; i < machine.states.length; i++) {
        let state = machine.states[i];
        states.push(state.transformBreakOrContinue(labels));
      }
      machine = new StateMachine(machine.startState, machine.fallThroughState,
                                 states, machine.exceptionBlocks);
    }

    return machine;
  }
If a block contains a statement which has been transformed into a state
machine, then all statements are forcibly transformed into a state
machine, then the machines are knitted together.
@param {Block} tree
@return {ParseTree}