constructor(idGenerator, requestParentLabel) {
    super();
    this.idGenerator_ = idGenerator;
    this.inLoop_ = 0;
    this.inBreakble_ = 0;
    this.variableDeclarations_ = [];
    this.extractedStatements_ = [];
    this.requestParentLabel_ = requestParentLabel;
    this.labelledStatements_ = new StringSet();
  }
Givens a list of statements, this extracts all the needed `return`s,
`break`s and `continue`s (abrupt completions statements).
It returns an object containing
- variableStatement: Might contain aliases to `this` and `arguments`,
   and also a function
- loopBody: Might contain a call to the function defined above, and also
   a switch statement for the abrupt completions